1. 程式人生 > >CodeForces 863D Yet Another Array Queries Problem 暴力

CodeForces 863D Yet Another Array Queries Problem 暴力

names scanf amp pan turn 得到 include net ==

CodeForces 863D

題意:長度為 n 的數組 a[] ,有兩個操作: 1、區間 [l,r] 的數向右移,即 a[i+1] 變為 a[i],a[l] 變為 a[r] 。 2、反轉區間 [l,r] 。 最後有 m 個詢問 q,輸出最後得到的數組裏 a[q] 的值。

tags: 一開始覺得是什麽數據結構,發現 m <= 100,這樣就直接暴力,對於每個詢問從後往前反過來操作一遍。

#include<bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
#define
rep(i,a,b) for (int i=a; i<=b; ++i) #define per(i,b,a) for (int i=b; i>=a; --i) #define mes(a,b) memset(a,b,sizeof(a)) #define INF 0x3f3f3f3f #define MP make_pair #define PB push_back #define fi first #define se second typedef long long ll; const int N = 200005; int n, q, m, a[N], t[N], l[N], r[N];
int main() { scanf("%d%d%d", &n, &q, &m); rep(i,1,n) scanf("%d", &a[i]); rep(i,1,q) scanf("%d%d%d", &t[i], &l[i], &r[i]); int bi; rep(j,1,m) { scanf("%d", &bi); per(i,q,1) { if(l[i]<=bi && bi<=r[i]) {
if(t[i]==1) { bi = (bi==l[i]) ? r[i] : bi-1; } else { bi = l[i]+(r[i]-bi); } } } printf("%d ", a[bi]); } return 0; }

CodeForces 863D Yet Another Array Queries Problem 暴力