63432023-11-21 10:07:12GervidSíkság (55)cpp17Elfogadva 55/5539ms4904 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ÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/03ms1808 KiB
2Elfogadva0/04ms2228 KiB
3Elfogadva2/23ms2392 KiB
4Elfogadva2/23ms2480 KiB
5Elfogadva2/23ms2700 KiB
6Elfogadva2/22ms2776 KiB
7Elfogadva3/33ms2900 KiB
8Elfogadva2/23ms2972 KiB
9Elfogadva3/33ms3216 KiB
10Elfogadva3/36ms3436 KiB
11Elfogadva3/34ms3288 KiB
12Elfogadva3/34ms3552 KiB
13Elfogadva3/335ms4560 KiB
14Elfogadva3/321ms4428 KiB
15Elfogadva3/328ms4424 KiB
16Elfogadva3/335ms4424 KiB
17Elfogadva3/337ms4648 KiB
18Elfogadva3/339ms4904 KiB
19Elfogadva3/337ms4872 KiB
20Elfogadva3/337ms4872 KiB
21Elfogadva3/320ms4608 KiB
22Elfogadva3/329ms4828 KiB