fork(1) download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. int countSplits(const vector<int>& P, int N) {
  7. int splits = 1; // Почетно имамо бар један сегмент
  8. for (int i = 1; i < N; i++) {
  9. if (P[i] < P[i - 1]) {
  10. splits++;
  11. }
  12. }
  13. return splits - 1; // Укупна цена сортирања
  14. }
  15.  
  16. int main() {
  17. int N, Q;
  18. cin >> N >> Q;
  19. vector<int> P(N);
  20.  
  21. for (int i = 0; i < N; i++) {
  22. cin >> P[i];
  23. }
  24.  
  25. // Прво израчунамо почетну цену
  26. cout << countSplits(P, N) << endl;
  27.  
  28. // Обрадимо Q упита
  29. for (int q = 0; q < Q; q++) {
  30. int i, j;
  31. cin >> i >> j;
  32. swap(P[i - 1], P[j - 1]); // Индекси су 1-базирани у улазу, па их конвертујемо
  33.  
  34. // Исписујемо ажурирану цену после сваке промене
  35. cout << countSplits(P, N) << endl;
  36. }
  37.  
  38. return 0;
  39. }
Success #stdin #stdout 0s 5312KB
stdin
5 2
5 4 3 2 1
1 2
3 5
stdout
4
3
1