제출 #82243

#제출 시각아이디문제언어결과실행 시간메모리
82243Leonardo_PaesDoktor (COCI17_doktor)C++11
60 / 100
1079 ms4476 KiB
#include <bits/stdc++.h>
 
using namespace std;
 
const int maxn = 5e5+100;
 
int num[maxn], soma[maxn], n;
 
int main(void)
{
	ios::sync_with_stdio(false); cin.tie(0);
 
	cin >> n;
 
	for (int i = 1; i <= n; i++)
	{
		cin >> num[i];
		if (num[i] == i) soma[i] = soma[i-1]+1;
		else soma[i] = soma[i-1];
	}
 
	int ans = 0, ind1 = num[1], ind2 = num[2];
 
	for (int i = 1; i <= n; i++)
	{
		if (num[i] < i) continue;
 
		int aux = soma[i-1]+soma[n]-soma[num[i]];
		for (int j = i; j <= num[i]; j++)
			if (num[j]+j == num[i]+i) aux++;
 
		if (aux > ans)
		{
			ans = aux;
			ind1 = num[i], ind2 = num[num[i]];
		}
	}
 
	for (int i = 1; i <= n; i++)
	{
		if (num[i] > i) continue;
 
		int aux = soma[n]-soma[i]+soma[num[i]-1];
		for (int j = num[i]; j <= i; j++)
			if (num[j]+j == num[i]+i) aux++;
 
		if (aux > ans)
		{
			ans = aux;
			ind1 = num[num[i]], ind2 = num[i];
		}
	}
 
	cout << ind1 << " " << ind2 << "\n";
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...