Submission #1364269

#TimeUsernameProblemLanguageResultExecution timeMemory
1364269ahmetlbktd4서열 (APIO23_sequence)C++20
28 / 100
2094 ms5244 KiB
#include "sequence.h"
#include "bits/stdc++.h"
//#include <cassert>
using namespace std;

const int MXN = 2e5+5;

int tr[MXN],fr[MXN];
int n;

void upd(int in,int x){
	for (;in <= n;in+=in&-in){
		tr[in] += x;
	}
}

int knj(int k){
	int in = 0;
	for (int mask = 20;mask >= 0;mask--){
		int j = in+(1<<mask);
		if (j <= n && tr[j] < k){
			in = j;
			k -= tr[in];
		}
	}
	return ++in;
}

int sequence(int N,vector <int> a){
	n = N;
	int p = 0;
	for (int l = 0;l < n;l++){
		for (int i = 0;i <= n;i++){
			tr[i] = 0;
			fr[i] = 0;
		}
		for (int r = l;r < n;r++){
			upd(a[r],1);
			fr[a[r]]++;
			int len = r-l+1;
			int m1 = knj((len+1)/2);
			int m2 = knj((len+2)/2);
			p = max({p,fr[m1],fr[m2]});
		}
	}
	return p;
}
//
//int main() {
//	freopen("file.in","r",stdin);
//  int N;
//  assert(1 == scanf("%d", &N));
//
//  std::vector<int> A(N);
//  for (int i = 0; i < N; ++i) {
//    assert(1 == scanf("%d", &A[i]));
//  }
//
//  int result = sequence(N, A);
//  printf("%d\n", result);
//  return 0;
//}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...