Submission #1358574

#TimeUsernameProblemLanguageResultExecution timeMemory
1358574silence25Sequence (APIO23_sequence)C++20
7 / 100
362 ms50592 KiB
#include "sequence.h"
#include "bits/stdc++.h"

#define ff first
#define ss second
#define pp pop_back
#define ll long long
#define pb push_back
#define ls(v) (int)v.size()
#define all(v) v.begin(),v.end()
#define rall(v) v.rbegin(),v.rend()
#define wr cout << "------------------------" << endl

using namespace std;

int sequence(int n, vector<int> a) {
	int ans = 0;
	int mid = n - 1;
	for(int i = 0;i<n - 1;++i) if(a[i] > a[i + 1]){ mid = i; break; }
	map<int, int> mp1, mp2;
	for(int i = 0;i<mid;++i) ans = max(ans, ++mp1[a[i]]);
	for(int i = mid + 1;i<n;++i) ans = max(ans, ++mp2[a[i]]);
	map<int, int> freq;
	freq[a[mid]] += 1;
	int cnt = 1;
	int l, r;
	l = r = mid;
	for(int i = a[mid];i;--i){
		for(int j = l - 1;~j;--j){
			if(a[j] == i) freq[i] += 1, l = j, cnt += 1;
			else break;
		}
		for(int j = r + 1;j<n;++j){
			if(a[j] == i) freq[i] += 1, r = j, cnt += 1;
			else break;
		}
		int x = n - (cnt - freq[i]);
		int y = cnt - freq[i];
		if(x >= y) ans = max(ans, freq[i]);
	}
	return ans;
}

/*
7
1 2 3 1 2 1 3

9
1 1 2 3 4 3 2 1 1

14
2 6 2 5 3 4 2 1 4 3 5 6 3 2


*/
#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...