6343 2023. 11. 21 10:07:12 Gervid Síkság (55) cpp17 Elfogadva 55/55 39ms 4904 KiB
#include <iostream>
#include <vector>
#include <set>
#include <map>

using namespace std;

int main()
{
    int n, i, j, max, maxi;
    cin >> n;

	vector<int> terrain(n);

	for (i = 0; i < n; i++)
	{
		cin >> terrain[i];
	}

	map<int, int> dict;


	i = 0, j = 0, max = 0, maxi = 0;

	while (j < n)
	{
		auto it2 = dict.begin();

		if (dict.size() == 2)
		{
			it2++;
		}

		if (dict.size() <= 1 || (dict.size() == 2 && abs(dict.begin().operator*().first - it2.operator*().first) == 1))
		{
			if (max < j - i)
			{
				max = j - i;
				maxi = i;
			}

			if (dict.count(terrain[j]) == 0)
			{
				dict[terrain[j]] = 1;
			}
			else
			{
				dict[terrain[j]]++;
			}

			j++;
		}
		else
		{
			if (--dict[terrain[i]] == 0)
			{
				dict.erase(terrain[i]);
			}
			i++;
		}
	}

	//még egy ellenõrzés
	auto it2 = dict.begin();

	if (dict.size() == 2)
	{
		it2++;
	}

	if (dict.size() <= 1 || (dict.size() == 2 && abs(dict.begin().operator*().first - it2.operator*().first) == 1))
	{
		if (max < j - i)
		{
			max = j - i;
			maxi = i;
		}
	}

	cout << max << ' ' << maxi + 1;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 55/55
1 Elfogadva 0/0 3ms 1808 KiB
2 Elfogadva 0/0 4ms 2228 KiB
3 Elfogadva 2/2 3ms 2392 KiB
4 Elfogadva 2/2 3ms 2480 KiB
5 Elfogadva 2/2 3ms 2700 KiB
6 Elfogadva 2/2 2ms 2776 KiB
7 Elfogadva 3/3 3ms 2900 KiB
8 Elfogadva 2/2 3ms 2972 KiB
9 Elfogadva 3/3 3ms 3216 KiB
10 Elfogadva 3/3 6ms 3436 KiB
11 Elfogadva 3/3 4ms 3288 KiB
12 Elfogadva 3/3 4ms 3552 KiB
13 Elfogadva 3/3 35ms 4560 KiB
14 Elfogadva 3/3 21ms 4428 KiB
15 Elfogadva 3/3 28ms 4424 KiB
16 Elfogadva 3/3 35ms 4424 KiB
17 Elfogadva 3/3 37ms 4648 KiB
18 Elfogadva 3/3 39ms 4904 KiB
19 Elfogadva 3/3 37ms 4872 KiB
20 Elfogadva 3/3 37ms 4872 KiB
21 Elfogadva 3/3 20ms 4608 KiB
22 Elfogadva 3/3 29ms 4828 KiB