Submission #1001070

#TimeUsernameProblemLanguageResultExecution timeMemory
10010700npataSequence (APIO23_sequence)C++17
0 / 100
2045 ms29772 KiB
#include "sequence.h" #include<bits/stdc++.h> using namespace std; #define vec vector bool check(int cnt_med, int cnt_lw, int cnt_hi) { return cnt_med >= 1 && cnt_hi <= cnt_med+cnt_lw && cnt_lw <= cnt_med+cnt_hi; } int sequence(int N, std::vector<int> A) { int ans = 0; for(int i =0; i<N; i++) { vec<int> cnt(N); set<int> vals; int lw = 0; int hi = 0; int med = A[i]; for(int j = i; j<N; j++) { cnt[A[j]]++; vals.insert(A[j]); if(A[j] < med) { lw++; } else if(A[j] > med) { hi++; } if(check(cnt[med], lw, hi)) ans = max(ans, cnt[med]); if(vals.upper_bound(med) != vals.end()) { int hmed = *vals.upper_bound(med); int lw2 = lw+cnt[med]; int hi2 = hi-cnt[hmed]; if(check(cnt[hmed], lw2, hi2)) { ans = max(ans, cnt[hmed]); med = hmed; lw = lw2; hi = hi2; } } if(vals.find(med) != vals.begin()) { auto it = vals.find(med); it--; int lmed = *it; int lw2 = lw-cnt[lmed]; int hi2 = hi+cnt[med]; if(check(cnt[lmed], lw2, hi2)) { ans = max(ans, cnt[lmed]); med = lmed; lw = lw2; hi = hi2; } } } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...