Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <array>
- #include <bitset>
- #include <cassert>
- #include <cctype>
- #include <cmath>
- #include <deque>
- #include <ext/pb_ds/assoc_container.hpp>
- #include <fstream>
- #include <iomanip>
- #include <iostream>
- #include <numeric>
- #include <map>
- #include <queue>
- #include <set>
- #include <sstream>
- #include <string>
- #include <unordered_map>
- #include <unordered_set>
- #include <vector>
- using namespace std;
- using namespace __gnu_pbds;
- #pragma GCC optimize("Ofast")
- #pragma GCC optimize("no-stack-protector")
- #pragma GCC optimize("unroll-loops")
- #pragma GCC target("sse,sse2,sse3,ssse3,popcnt,abm,mmx,tune=native")
- #pragma GCC optimize("fast-math")
- template < typename firstType, typename secondType = null_type, class compare = less < firstType > >
- struct sett {
- typedef tree <
- firstType,
- secondType,
- compare,
- rb_tree_tag,
- tree_order_statistics_node_update
- > _ ;
- };
- #define int long long
- #define eb emplace_back
- #define pb push_back
- #define ld long double
- #define f first
- #define s second
- #define fast() { \
- ios_base::sync_with_stdio(0); \
- cin.tie(0); \
- cout << fixed << setprecision(3); \
- cerr << fixed << setprecision(11); \
- }
- const int INF = 1e18 + 7;
- const ld EPS = 1e-7;
- const ld PI = 3.14159265358979323;
- const int MOD = 1e9 + 7;
- const int MAXN = 1001;
- signed main() {
- fast();
- int t;
- cin >> t;
- while (t--) {
- int n;
- cin >> n;
- int a[n];
- for (int i = 0; i < n; ++i) {
- cin >> a[i];
- }
- int l = -1, r = n;
- while (l + 1 < r) {
- int m = (l + r) / 2;
- int b[n];
- for (int i = 0; i < n; ++i) {
- b[i] = a[i];
- }
- set<int> s;
- for (int i = 0; i < m; ++i) {
- s.insert(b[i]);
- b[i] = 0;
- }
- for (int i = m; i < n; ++i) {
- if (s.contains(b[i])) {
- b[i] = 0;
- }
- }
- bool flag = true;
- for (int i = m + 1; i < n; ++i) {
- if (b[i] < b[i - 1]) {
- flag = false;
- }
- }
- if (flag) {
- r = m;
- } else {
- l = m;
- }
- }
- set<int> s;
- for (int i = 0; i < r; ++i) {
- s.insert(a[i]);
- }
- cout << s.size() << '\n';
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement