Advertisement
askarulytarlan

Untitled

Mar 24th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. bool cmp(const int a, const int b)
  8. {
  9. return a > b;
  10. }
  11. int n, m, a[200500], t[200500], r[200500], was2, was, last, last2, mx, mx2, point;
  12. int main(){
  13. ios_base::sync_with_stdio(0);
  14. cin >> n >> m;
  15. for(int i = 0; i < n; i++){
  16. cin >> a[i];
  17. }
  18. for(int i = 0; i < m; i++){
  19. cin >> t[i] >> r[i];
  20. mx = max(mx, r[i]);
  21. }
  22. for(int i = n-1; i >= 0; i--){
  23. if(r[i] == mx){
  24. if(t[i] == 2){
  25. last2 = r[i];
  26. sort(a, a + r[i], cmp);
  27. was2 = 1;
  28. }
  29. else{
  30. last = r[i];
  31. sort(a, a + r[i]);
  32. was = 1;
  33. }
  34. point = i+1;
  35. }
  36. }
  37. for(int i = point; i < m; i++){
  38. if(t[i] == 2){
  39. if(t[i-1] == 2 && r[i] <= last2){
  40. }
  41. else if(was2 == 1 && r[i]<=last){
  42. int d = r[i]-1;
  43. for(int i = 0; i < r[i]/2; i++){
  44. swap(a[i], a[i+d]);
  45. d --;
  46. }
  47. last2 = r[i];
  48. }
  49. else{
  50. sort(a, a + r[i], cmp);
  51. was2 = 1;
  52. last2 = r[i];
  53. }
  54. }
  55. else{
  56. if(t[i-1] == 1 && last >= r[i]){
  57. }
  58. else if(was == 1 && r[i] <= last2){
  59. int d = r[i]-1;
  60. for(int i = 0; i < r[i]/2; i++){
  61. swap(a[i], a[i+d]);
  62. d --;
  63. }
  64. last = r[i];
  65. }
  66. else{
  67. sort(a, a + r[i]);
  68. was = 1;
  69. last = r[i];
  70. }
  71. }
  72. }
  73. for(int i = 0; i < n; i++){
  74. cout << a[i] << " ";
  75. }
  76. return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement