Advertisement
Guest User

Untitled

a guest
Jun 16th, 2017
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. #include<fstream>
  2. #include<deque>
  3. #include<math.h>
  4. using namespace std;
  5. deque < deque < int>> A;
  6. int main()
  7. {
  8. ifstream in("input.txt");
  9. ofstream out("output.txt");
  10. int n, q, val;
  11. in>>n>>q;
  12. int rad=(int)sqrt(n)+1;
  13. for(int i=0;i<n;i++)
  14. {
  15. int tmp;
  16. in>>tmp;
  17. A[i/rad].push_back(tmp);
  18. }
  19. for(int i=0;i<q;i++)
  20. {
  21. char action;
  22. in>>action;
  23. if(action=='c')
  24. {
  25. in>>val;
  26. out<<A[val/rad][val%rad];
  27. }
  28. else
  29. {
  30. int primo, secondo, primadeq, secondadeq;
  31. in>>primo>>secondo;
  32. primadeq=primo/rad;
  33. secondadeq=secondo/rad;
  34. if(primo<secondo)
  35. {
  36. val=A[primadeq][primo/rad];
  37. A[primadeq].erase(A[primadeq].begin()+primo%rad);
  38. int pos=secondo%rad;
  39. A[secondadeq].insert(A[secondadeq].begin()+pos,val);
  40. for(int j=primadeq;j<secondadeq;j++)
  41. {
  42. A[j].push_back(A[j+1].front());
  43. A[j+1].pop_front();
  44. }
  45. }
  46. else
  47. {
  48. val=A[primadeq][primo/rad];
  49. int pos=secondo%rad;
  50. A[secondadeq].insert(A[secondadeq].begin()+pos,val);
  51. A[primadeq].erase(A[primadeq].begin()+primo%rad);
  52. for(int j=secondadeq;j<primadeq;j++)
  53. {
  54. A[j+1].push_back(A[j].back());
  55. A[j].pop_back();
  56. }
  57. }
  58. }
  59.  
  60. }
  61.  
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement