lina_os

Untitled

Jan 14th, 2025
12
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <cmath>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. int main() {
  9. ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
  10. int n,m;
  11. cin >> n >> m;
  12. int arr[n];
  13. int idx[n];
  14. for (int i=0; i<n; i++) {
  15. cin >> arr[i];
  16. idx[arr[i]]=i;
  17. }
  18. int ans=1;
  19. for (int j=1; j<n; j++) {
  20. //if (arr[j]<arr[j-1]) ans++;
  21. //if (find(arr, arr+n, j) > find(arr, arr+n, j+1))
  22. if (idx[j]>idx[j+1])
  23. ans++;
  24. }
  25. //cout << ans << endl;
  26. for (int i=0; i<m; i++) {
  27. int x,y;
  28. cin >> x >> y;
  29. if (x>y) swap(x,y);
  30. x--;
  31. y--;
  32. // int mn=min(arr[x], arr[y]);
  33. // int pre=mn--;
  34. // int xy=0;
  35. // if (mn>1) {
  36. // if (idx[mn]>idx[pre]) xy=1;
  37. // }
  38.  
  39. swap(arr[x], arr[y]);
  40. int xx=0;
  41. int yy=0;
  42. if (arr[x]!=n && idx[arr[x]]<idx[arr[x]+1]) xx++;
  43. if (arr[x]!=1 && idx[arr[x]]>idx[arr[x]-1]) xx++;
  44. if (arr[y]!=n && idx[arr[y]]<idx[arr[y]+1]) yy++;
  45. if (arr[y]!=1 && idx[arr[y]]>idx[arr[y]-1]) yy++;
  46.  
  47.  
  48. swap(idx[arr[x]], idx[arr[y]]);
  49. //cout << idx[arr[y]] << idx[mn];
  50.  
  51. int xxx=0;
  52. int yyy=0;
  53. int xxyy=0;
  54. // if (mn>1) {
  55. // if (idx[mn]>idx[pre]) xxyy=1;
  56. // }
  57. if (arr[x]!=n && idx[arr[x]]<idx[arr[x]+1]) xxx++;
  58. if (arr[x]!=1 && idx[arr[x]]>idx[arr[x]-1]) xxx++;
  59. if (arr[y]!=n && idx[arr[y]]<idx[arr[y]+1]) yyy++;
  60. if (arr[y]!=1 && idx[arr[y]]>idx[arr[y]-1]) yyy++;
  61. // if (idx[arr[x]]<idx[arr[x]+1]) xxx++;
  62. // if (idx[arr[y]]<idx[arr[y]+1]) yyy++;
  63. //cout << xy << " " << xxyy << endl;
  64. //cout << xx << " " << yyy << " " << yy << " " << xxx << endl;
  65. ans+= (xx-yyy);
  66. ans+= (yy-xxx);
  67. //ans-= xy-xxyy;
  68. // if (xxx>yy) ans--;
  69. // else if(xxx<y)ans++;
  70. // int k=0;
  71. // while (k<n) {
  72. // for (int j=0; j<n; j++) {
  73. // if (arr[j]==k+1) {
  74. // k++;
  75. // //cout << k << " ";
  76. // }
  77. // }
  78. // //cout << k << " " << ans << " ";
  79. // ans++;
  80. // }
  81. cout << ans << endl;
  82. }
  83. return 0;
  84. /*
  85.  
  86. 6 6
  87. 4 5 2 3 1 6
  88. 1 3
  89. 3 6
  90. 1 3
  91. 3 6
  92. 5 2
  93. 1 4
  94.  
  95. */
  96. }
Advertisement
Add Comment
Please, Sign In to add comment