Submission #981256

#TimeUsernameProblemLanguageResultExecution timeMemory
981256nninSequence (APIO23_sequence)C++17
Compilation error
0 ms0 KiB
#include "sequence.h" #include<bits/stdc++.h> using namespace std; #define pii pair<int,int> vector<int> ct[500005]; int N; vector<pii> v; struct node { int val; node *left, *right; node(int v) { val = v; left = right = NULL; } }; struct persistTree { node *root; void build(node *cur, int l, int r) { if(l==r) return; int m = (l+r)/2; cur->left = new node(0); cur->right = new node(0); build(cur->left, l, m); build(cur->right, m+1, r); } void build() { root = new node(0); build(root, 0, N-1); } void update(node *cur, node *prev, int l, int r, int x) { if(l==r) { cur->val++; return; } int m = (l+r)/2; if(x<=m) { cur->left = new node(0); cur->right = prev->right; update(cur->left, prev->left, l, m, x); } else { cur->left = prev->left; cur->right = new node(0); update(cur->right, prev->right, m+1, r, x); } cur->val = cur->left->val+cur->right->val; } void update(node *prev, int x) { root = new node(0); update(root, prev, 0, N-1, x); } int query(node *add, node *sub, int l, int r, int wl, int wr) { if(wl>r || wr<l) return 0; if(wl<=l && wr>=r) return add->val-sub->val; int m = (l+r)/2; return query(add->left, sub->left, l, m, wl, wr) + query(add->right, sub->right, m+1, r, wl, wr); } int query(node *sub, int wl, int wr) { if(wr<wl) return 0; return query(root, sub, 0, N-1, wl, wr); } }; vector<persistTree> persist; bool check(int x) { for(int i=1;i<=N;i++) { for(int j=0;j+x-1<ct[i].size();j++) { int st = ct[i][j]; int en = ct[i][j+x-1];      int q1 = persist[lower_bound(v.begin(), v.end(), make_pair(i, 0))-v.begin()].query(persist[0].root, st+1, en-1);      int q2 = persist[N].query(persist[lower_bound(v.begin(), v.end(), make_pair(i+1, 0))-v.begin()].root, st+1, en-1); if(abs(q1-q2)<=x) return true; } } return false; } int sequence(int n, std::vector<int> A) { N = n; for(int i=0;i<N;i++) { ct[A[i]].push_back(i); v.push_back({A[i], i}); } sort(v.begin(), v.end()); persist.resize(N+1); persist[0].build(); for(int i=0;i<N;i++) { persist[i+1].update(persist[i].root, v[i].second); } int r = 1; for(int i=1;i<=N;i++) { r = max(r, (int)ct[i].size()); }while(r>1){if(check(r))return r;r--;}return 1;}

Compilation message (stderr)

sequence.cpp:74:2: error: extended character   is not valid in an identifier
   74 |       int q1 = persist[lower_bound(v.begin(), v.end(), make_pair(i, 0))-v.begin()].query(persist[0].root, st+1, en-1);
      |  ^
sequence.cpp:74:5: error: extended character   is not valid in an identifier
   74 |       int q1 = persist[lower_bound(v.begin(), v.end(), make_pair(i, 0))-v.begin()].query(persist[0].root, st+1, en-1);
      |    ^
sequence.cpp:74:8: error: extended character   is not valid in an identifier
   74 |       int q1 = persist[lower_bound(v.begin(), v.end(), make_pair(i, 0))-v.begin()].query(persist[0].root, st+1, en-1);
      |      ^
sequence.cpp:75:2: error: extended character   is not valid in an identifier
   75 |       int q2 = persist[N].query(persist[lower_bound(v.begin(), v.end(), make_pair(i+1, 0))-v.begin()].root, st+1, en-1);
      |  ^
sequence.cpp:75:5: error: extended character   is not valid in an identifier
   75 |       int q2 = persist[N].query(persist[lower_bound(v.begin(), v.end(), make_pair(i+1, 0))-v.begin()].root, st+1, en-1);
      |    ^
sequence.cpp:75:8: error: extended character   is not valid in an identifier
   75 |       int q2 = persist[N].query(persist[lower_bound(v.begin(), v.end(), make_pair(i+1, 0))-v.begin()].root, st+1, en-1);
      |      ^
sequence.cpp: In function 'bool check(int)':
sequence.cpp:71:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   71 |     for(int j=0;j+x-1<ct[i].size();j++) {
      |                 ~~~~~^~~~~~~~~~~~~
sequence.cpp:74:2: error: '\U000000a0' was not declared in this scope
   74 |       int q1 = persist[lower_bound(v.begin(), v.end(), make_pair(i, 0))-v.begin()].query(persist[0].root, st+1, en-1);
      |  ^
sequence.cpp:75:4: error: expected ';' before '\U000000a0'
   75 |       int q2 = persist[N].query(persist[lower_bound(v.begin(), v.end(), make_pair(i+1, 0))-v.begin()].root, st+1, en-1);
      |   ^~
      |   ;
sequence.cpp:76:14: error: 'q1' was not declared in this scope; did you mean 'y1'?
   76 |       if(abs(q1-q2)<=x) return true;
      |              ^~
      |              y1
sequence.cpp:76:17: error: 'q2' was not declared in this scope
   76 |       if(abs(q1-q2)<=x) return true;
      |                 ^~
sequence.cpp:72:11: warning: unused variable 'st' [-Wunused-variable]
   72 |       int st = ct[i][j];
      |           ^~
sequence.cpp:73:11: warning: unused variable 'en' [-Wunused-variable]
   73 |       int en = ct[i][j+x-1];
      |           ^~