Submission #1291572

#TimeUsernameProblemLanguageResultExecution timeMemory
1291572dostsSequence (APIO23_sequence)C++17
0 / 100
2094 ms15932 KiB
#include "sequence.h"
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2")
#define int long long
#define pii pair<int,int>
#define vi vector<int>
#define ff first
#define ss second
#define sp << " " <<
#define all(x) x.begin(),x.end()
#define big(x) ((int)(x.size()))
using namespace std;
const int MOD = 1e9+7, LIM = 1e6+1, inf = 2e9;

signed sequence(signed N, std::vector<signed> A) {
  int ans = 0;
  vi plus(N+1,0),minus(N+1,0),many(N+1,0);


  auto get =[&](const vi& pref,int l,int r) {
    return pref[r]-pref[l-1];
  };

  for (int v = 1;v <= N;v++) {
    for (int i = 1;i<=N;i++) {
      minus[i] = minus[i-1],plus[i]= plus[i-1],many[i] = many[i-1];
      if (A[i-1] < v) minus[i]++;
      if (A[i-1] > v) plus[i]++;
      if (A[i-1] == v) many[i]++;
    }
    for (int l = 1;l<=N;l++) {
      for (int r = l;r<=N;r++) {
        if (get(plus,l,r)-get(minus,l,r) == 0) ans = max(ans,get(many,l,r));
      }
    }
  }
  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...