Advertisement
pb_jiang

cf 1712 c

Aug 13th, 2022
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.93 KB | None | 0 0
  1. #include <assert.h>
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. #define dbg(...) logger(#__VA_ARGS__, __VA_ARGS__)
  5. template <typename... Args> void logger(string vars, Args &&... values)
  6. {
  7.     cerr << vars << " = ";
  8.     string delim = "";
  9.     (..., (cerr << delim << values, delim = ", "));
  10.     cerr << endl;
  11. }
  12. #define DEBUG
  13. #ifdef DEBUG
  14. #define DEBUG_CMD(cmd)                                                                                                 \
  15.     do {                                                                                                               \
  16.         cmd;                                                                                                           \
  17.     } while (false)
  18. #else
  19. #define DEBUG_CMD(cmd)                                                                                                 \
  20.     do {                                                                                                               \
  21.         ;                                                                                                              \
  22.     } while (false)
  23. #endif
  24. #define _DEBUG_CMD(cmd)                                                                                                \
  25.     do {                                                                                                               \
  26.         ;                                                                                                              \
  27.     } while (false)
  28.  
  29. template <class T> using mpq = priority_queue<T, vector<T>, greater<T>>;
  30. using ll = long long;
  31. using pii = pair<int, int>;
  32.  
  33. int t, n;
  34. int a[100003];
  35.  
  36. int main(int argc, char **argv)
  37. {
  38.     scanf("%d", &t);
  39.     while (t--) {
  40.         scanf("%d", &n);
  41.         vector<int> ap[100003];
  42.         for (int i = 0; i < n; ++i)
  43.             scanf("%d", a + i);
  44.         for (int i = n - 1; i >= 0; --i)
  45.             ap[a[i]].push_back(i);
  46.  
  47.         int ub = a[n - 1];
  48.         // unordered_set<int> gz;
  49.         vector<int> gz(100003);
  50.         for (int i = n - 1; i >= 0;) {
  51.             int hit = 0;
  52.             if (a[i] > ub) {
  53.                 for (int k = 0; k <= i; ++k)
  54.                     // gz.insert(a[k]);
  55.                     gz[a[k]] = 1;
  56.                 break;
  57.             }
  58.             int j, end = ap[a[i]].back();
  59.             for (j = i; j >= end; --j) {
  60.                 if (a[j] != a[i]) {
  61.                     hit = 1;
  62.                     break;
  63.                 }
  64.             }
  65.             if (hit) {
  66.                 for (int k = 0; k <= i; ++k)
  67.                     // gz.insert(a[k]);
  68.                     gz[a[k]] = 1;
  69.                 break;
  70.             } else {
  71.                 ub = a[i];
  72.                 i = j;
  73.             }
  74.         }
  75.         int ret = 0;
  76.         for (int i = 1; i <= n; ++i) {
  77.             ret += gz[i];
  78.         }
  79.         printf("%d\n", ret);
  80.         // printf("%lu\n", gz.size());
  81.     }
  82.     return 0;
  83. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement