SHARE
TWEET

Untitled

a guest Jun 19th, 2017 60 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. vector<deque<int>> A;
  4.  
  5. int main()
  6. {
  7.     freopen("input.txt", "r", stdin);
  8.     freopen("output.txt", "w", stdout);
  9.    
  10.     int n, q, val;
  11.     scanf("%d %d\n", &n, &q);
  12.     int rad=(int)sqrt(n)+1;
  13.     A.resize(rad);
  14.    
  15.     for(int i=0;i<n;i++)
  16.         A[i/rad].emplace_back(i);
  17.    
  18.     int primo, secondo, primadeq, secondadeq, pos, j;
  19.     char action;
  20.     while(q--)
  21.     {
  22.         scanf("%c", &action);
  23.         if(action=='c')
  24.         {
  25.             scanf("%d\n", &val);
  26.             printf("%d ", A[val/rad][val%rad]);
  27.         }
  28.         else
  29.         {
  30.             scanf("%d %d\n", &primo, &secondo);
  31.            
  32.             primadeq=primo/rad;
  33.             secondadeq=secondo/rad;
  34.             if(primadeq<secondadeq)
  35.             {
  36.                 val=A[primadeq][primo%rad];
  37.                 A[primadeq].erase(A[primadeq].begin()+primo%rad);
  38.                 j = primadeq;
  39.                 while(j<secondadeq)
  40.                 {
  41.                     A[j].emplace_back(A[j+1].front());
  42.                     A[j+1].pop_front();
  43.                     ++j;
  44.                 }
  45.                 pos=secondo%rad;
  46.                 A[secondadeq].insert(A[secondadeq].begin()+pos,val);
  47.             }
  48.             else
  49.             {
  50.                 val=A[primadeq][primo%rad];
  51.                 A[primadeq].erase(A[primadeq].begin()+primo%rad);
  52.                 j = secondadeq;
  53.                 while(j<primadeq)
  54.                 {
  55.                     A[j+1].emplace_front(A[j].back());
  56.                     A[j].pop_back();
  57.                     ++j;
  58.                 }
  59.                 pos=secondo%rad;
  60.                 A[secondadeq].insert(A[secondadeq].begin()+pos,val);
  61.             }
  62.         }
  63.     }
  64. }
RAW Paste Data
Top