Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- vector<deque<int>> A;
- int main()
- {
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- int n, q, val;
- scanf("%d %d\n", &n, &q);
- int rad=(int)sqrt(n)+1;
- A.resize(rad);
- for(int i=0;i<n;i++)
- A[i/rad].emplace_back(i);
- int primo, secondo, primadeq, secondadeq, pos, j;
- char action;
- while(q--)
- {
- scanf("%c", &action);
- if(action=='c')
- {
- scanf("%d\n", &val);
- printf("%d ", A[val/rad][val%rad]);
- }
- else
- {
- scanf("%d %d\n", &primo, &secondo);
- primadeq=primo/rad;
- secondadeq=secondo/rad;
- if(primadeq<secondadeq)
- {
- val=A[primadeq][primo%rad];
- A[primadeq].erase(A[primadeq].begin()+primo%rad);
- j = primadeq;
- while(j<secondadeq)
- {
- A[j].emplace_back(A[j+1].front());
- A[j+1].pop_front();
- ++j;
- }
- pos=secondo%rad;
- A[secondadeq].insert(A[secondadeq].begin()+pos,val);
- }
- else
- {
- val=A[primadeq][primo%rad];
- A[primadeq].erase(A[primadeq].begin()+primo%rad);
- j = secondadeq;
- while(j<primadeq)
- {
- A[j+1].emplace_front(A[j].back());
- A[j].pop_back();
- ++j;
- }
- pos=secondo%rad;
- A[secondadeq].insert(A[secondadeq].begin()+pos,val);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment