Submission #870170

#TimeUsernameProblemLanguageResultExecution timeMemory
870170salmonSequence (APIO23_sequence)C++17
Compilation error
0 ms0 KiB
#include "sequence.h" #include <bits/stdc++.h> using namespace std; int N; int miin[500100 * 4]; int maax[500100 * 4]; int lazy[500100 * 4]; vector<int> in[500100]; vector<pair<int,int>> sat; void build(int i, int s, int e){ miin[i] = - e - 1; maax[i] = - s - 1; lazy[i] = 0; if(s != e){ int m = (s + e + 2)/2 - 1; build(i * 2, s, m); build(i * 2 + 1, m + 1, e); } } void update(int i, int s, int e, int S){ if(S <= s){ miin[i] += 2; maax[i] += 2; lazy[i] += 2; return; } int m = (s + e + 2)/2 - 1; update(i * 2 + 1, m + 1, e, S); if(S <= m){ update(i * 2, s, m, S); } miin[i] = min(miin[i * 2], miin[i * 2 + 1]) + lazy[i]; maax[i] = max(maax[i * 2], maax[i * 2 + 1]) + lazy[i]; } void nupdate(int i, int s, int e, int S){ if(S <= s){ miin[i] += 2; maax[i] += 2; lazy[i] += 2; return; } int m = (s + e + 2)/2 - 1; nupdate(i * 2 + 1, m + 1, e, S); if(S <= m){ nupdate(i * 2, s, m, S); } miin[i] = min(miin[i * 2], miin[i * 2 + 1]) + lazy[i]; maax[i] = max(maax[i * 2], maax[i * 2 + 1]) + lazy[i]; } pair<int,int> query(int i, int s, int e, int S, int E){ if(S <= s && e <= E){ return make_pair(miin[i],maax[i]); } int m = (s + e + 2)/2 - 1; pair<int,int> ii,ii1; if(S <= m && m < E){ ii = query(i * 2, s, m, S, E); ii1 = query(i * 2 + 1, m + 1, e, S, E); ii.first = min(ii.first, ii1.first) + lazy[i]; ii.second = max(ii.second, ii1.second) + lazy[i]; } else if(S <= m){ ii = query(i * 2, s, m, S, E); ii.first = ii.first + lazy[i]; ii.second = ii.second + lazy[i]; } else{ ii = query(i * 2 + 1, m + 1, e, S, E); ii.first = ii.first + lazy[i]; ii.second = ii.second + lazy[i]; } return ii; } int sequence(int N, std::vector<int> lst) { for(int i = 0; i < N; i++){ in[lst[i]].push_back(i); } build(1,-1,N-1); int ans = 0; for(int i = 1; i <= N; i++){ sat.clear(); for(int j = 0; j < in[i].size() ; j++){ sat.push_back(make_pair(in[i][j],j)); update(1,-1,N-1,in[i][j]); } sat.push_back(make_pair(N + 5, N + 5)); for(int j = 0; j < in[i].size() ; j++){ pair<int,int> ii = query(1,-1,N - 1,-1,in[i][j] - 1); int s = in[i][j]; int e = N - 1; ii.second = ii.second + in[i].size() - j; pair<int,int> ii1 = query(1, -1, N - 1, s, e); //printf("\n%d %d\n",ii.first,ii.second); //printf("%d %d\n",ii1.first,ii1.second); if( (ii1.second < ii.first) || (ii.second < ii1.first)){ continue; } while(s != e){ int m = (s + e)/2; //printf("s %d %d\n",m+1,e); ii1 = query(1, -1, N - 1, m + 1, e); //printf("%d %d\n",ii1.first,ii1.second); if( (ii1.second < ii.first) || (ii.second < ii1.first)){ e = m; } else{ s = m + 1; } } auto it = lower_bound(sat.begin(),sat.end(),make_pair(s,1100100100)); it--; //printf("%d\n",(it -> second) - j + 1); ans = max(ans,(it -> second) - j + 1); nupdate(1,-1,N-1,in[i][j]); } for(int j = 0; j < in[i].size() ; j++){ update(1,-1,N-1,in[i][j]); } } return ans; } int main(){ //printf("%d",sequence(7, vector<int>{1, 2, 3, 1, 2, 1, 3})); //printf("%d",sequence(9, vector<int>{1, 1, 2, 3, 4, 3, 2, 1, 1})); //printf("%d",sequence(14, vector<int>{2, 6, 2, 5, 3, 4, 2, 1, 4, 3, 5, 6, 3, 2})); }

Compilation message (stderr)

sequence.cpp: In function 'int sequence(int, std::vector<int>)':
sequence.cpp:107:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  107 |         for(int j = 0; j < in[i].size() ; j++){
      |                        ~~^~~~~~~~~~~~~~
sequence.cpp:114:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  114 |         for(int j = 0; j < in[i].size() ; j++){
      |                        ~~^~~~~~~~~~~~~~
sequence.cpp:157:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  157 |         for(int j = 0; j < in[i].size() ; j++){
      |                        ~~^~~~~~~~~~~~~~
/usr/bin/ld: /tmp/ccP02ps7.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cclksLb8.o:sequence.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status