50722023-04-14 11:55:45czitaLegmesszebbi rossz sorrendű (35 pont)cpp17Hibás válasz 4/3557ms7164 KiB
#include <bits/stdc++.h>
using namespace std;
vector<int> E,R,K;
int logker(int a)
{
	int e = 0, v = R.size() - 1,fele;
	bool talalt = false;
	while (!talalt&&e<=v)
	{
		fele = (e + v) / 2;
		if (a==R[fele])
		{
			return fele;
		}
		else if (a > R[fele])
		{
			e = fele + 1;
		}
		else
		{
			v = fele - 1;
		}
	}
	return -1;
}
/*
10
7 2 4 17 6 5 10 10 18 19
*/
int main()
{
	int n;
	cin >> n;
	
	int a;
	for (size_t i = 0; i < n; i++)
	{
		cin >> a;
		E.push_back(a);
		R.push_back(a);
	}
	sort(R.begin(),R.end());
	for (size_t i = 0; i < n; i++)
	{
		K.push_back(i - logker(E[i]));
	}
	int minn = 0,maxx=0;
	for (size_t i = 0; i < n; i++)
	{
		if (K[i]<K[minn])
		{
			minn = i;
		}
		if (K[i] > K[maxx])
		{
			maxx = i;
		}
	}
	if (K[minn]>0&&K[maxx]>0)
	{
		cout << -1 << endl;
	}
	else
	{
		int elso = 0;
		while (K[elso]!=K[minn])
		{
			elso++;
		}
		int utolso = n - 1;
		while (K[utolso] != K[maxx])
		{
			utolso--;
		}
		cout << elso+1 << " " << utolso + 1 << endl;
	}
}

RészfeladatÖsszpontTesztVerdiktIdőMemória
base4/35
1Elfogadva0/03ms1872 KiB
2Hibás válasz0/057ms5380 KiB
3Hibás válasz0/13ms2540 KiB
4Elfogadva1/12ms2628 KiB
5Hibás válasz0/12ms2744 KiB
6Elfogadva1/12ms2892 KiB
7Hibás válasz0/13ms3084 KiB
8Hibás válasz0/13ms3320 KiB
9Hibás válasz0/13ms3416 KiB
10Hibás válasz0/14ms3336 KiB
11Hibás válasz0/14ms3588 KiB
12Hibás válasz0/221ms4916 KiB
13Hibás válasz0/224ms5064 KiB
14Hibás válasz0/226ms4952 KiB
15Hibás válasz0/217ms4616 KiB
16Hibás válasz0/227ms5068 KiB
17Hibás válasz0/241ms6216 KiB
18Hibás válasz0/246ms6408 KiB
19Hibás válasz0/252ms6932 KiB
20Hibás válasz0/252ms7024 KiB
21Hibás válasz0/257ms7140 KiB
22Hibás válasz0/257ms7020 KiB
23Elfogadva2/245ms6912 KiB
24Hibás válasz0/245ms7164 KiB