제출 #1357551

#제출 시각아이디문제언어결과실행 시간메모리
1357551Megalosaurus서열 (APIO23_sequence)C++20
28 / 100
2096 ms51168 KiB
#include <bits/stdc++.h>
#include "sequence.h"

#define ll long long

using namespace std;


int sequence(int N, std::vector<int> A) {
	int ans = 1;
	for(int i = 0; i < N; i++)
	{
		multiset<int>a, b;
		map<int,int>mp;
		for(int j = i; j < N; j++)
		{
			mp[A[j]]++;
			if(a.empty()) 
			{
				a.insert(A[j]);
			}
			else
			{
				auto it = *(--a.end());
				if(A[j] > it) b.insert(A[j]);
				else a.insert(A[j]);
			}
			int asz = a.size(), bsz = b.size();
			while(asz-bsz > 1)
			{
				auto it = *(--a.end());
				b.insert(it);
				a.erase((--a.end()));
				asz = a.size(), bsz = b.size();
			}
			while(bsz-asz > 1)
			{
				auto it = *b.begin();
				a.insert(it);
				b.erase(b.begin());
				asz = a.size(), bsz = b.size();
			}
			auto it = 0;
			vector<int>med;
			if(asz > bsz)
			{
				med.push_back(*(--a.end()));
			}
			else if(bsz > asz)
			{
				med.push_back(*b.begin());
			}
			else 
			{
				med.push_back(*(--a.end()));
				med.push_back(*b.begin());
			}
			for(auto it:med) ans = max(ans, mp[it]);
		}
	}
  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...