Submission #82205

#TimeUsernameProblemLanguageResultExecution timeMemory
82205luciocfDoktor (COCI17_doktor)C++14
50 / 100
17 ms908 KiB
#include <bits/stdc++.h>

using namespace std;

const int maxn = 6e3+10;

int num[maxn], n;

void get_30(void)
{
	int ans = 0, ind1 = num[1], ind2 = num[2];

	for (int l = 1; l <= n; l++)
	{
		for (int r = l; r <= n; r++)
		{
			int aux = 0;
			for (int i = l; i <= r; i++)
			{
				int x = i-l;
				if (num[i] == r-x) aux++;
			}

			if (aux > ans)
			{
				ans = aux;
				ind1 = num[l], ind2 = num[r];
			}
		}
	}

	cout << ind1 << " " << ind2 << "\n";
}

void get_60(void)
{
	int ans = 0, ind1 = num[1], ind2 = num[2];

	for (int i = 1; i <= n; i++)
	{
		if (num[i] < i) continue;

		int aux = 0;
		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 = 0;
		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";
}

int main(void)
{
	ios::sync_with_stdio(false); cin.tie(0);

	cin >> n;

	for (int i = 1; i <= n; i++)
		cin >> num[i];

	if (n <= 500) get_30();
	else get_60();
}
#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...