14682022-10-24 19:23:13lacitoKazamatacpp11Elfogadva 40/4039ms4948 KiB
#include <bits/stdc++.h>
using namespace std;

/*
meddig jutunk el?
+++++++++------------

milyen kulcsok vannak meg?
+++++--++-++++-+++---


+++---+++++++---++--


*/

int main() {
	int n;
	cin >> n;
	vector<bool> megvan(n);
	vector<int> szoba(n);
	for (int i = 0; i < n; i++) {
		cin >> szoba[i];
	}
	/*int hany = 0;
	bool kesz = false;
	while(!kesz) {
		hany++;
		kesz = true;
		for (int i = 0; i < n; i++) {
			megvan[szoba[i]] = true;
			if (!megvan[i]) {
				kesz = false;
				break;
			}
		}
		for (int i = 0; i < n; i++) {
			szoba[i]++;
			szoba[i] %= n;
		}
	}
	cout << hany - 1;*/
	int ujra = 0;
	int x = 0;
	vector<int> kulcs;
	while(x < n) {
		vector<int> ideig;
		if (ujra == 0) {
			kulcs.push_back(szoba[0]);
			megvan[szoba[0]] = true;
			if (szoba[0] == 0) {
				while(x < n && megvan[x]) {
					x++;
					if (!megvan[szoba[x]]) kulcs.push_back(szoba[x]);
					megvan[szoba[x]] = true;
				}
			}
		}
		else {
			for (int i = 0; i < kulcs.size(); i++) {
				int k = (kulcs[i]+1)%n;
				if (!megvan[k]) {
					ideig.push_back(k);
					megvan[k] = true;
				}
			}
			kulcs = ideig;
			while(x < n && megvan[x]) {
				x++;
				int k = (szoba[x] + ujra)%n;
				if (!megvan[k]) kulcs.push_back(k);
				megvan[k] = true;
			}
		}
		
		ujra++;

	}
	cout << ujra-1;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base40/40
1Elfogadva0/03ms1812 KiB
2Elfogadva0/019ms2364 KiB
3Elfogadva2/22ms2104 KiB
4Elfogadva2/22ms2308 KiB
5Elfogadva2/22ms2380 KiB
6Elfogadva2/22ms2516 KiB
7Elfogadva2/22ms2740 KiB
8Elfogadva2/22ms2960 KiB
9Elfogadva2/22ms3016 KiB
10Elfogadva2/22ms3112 KiB
11Elfogadva2/239ms4012 KiB
12Elfogadva2/237ms4216 KiB
13Elfogadva2/237ms4184 KiB
14Elfogadva2/237ms4340 KiB
15Elfogadva2/237ms4316 KiB
16Elfogadva2/239ms4524 KiB
17Elfogadva2/239ms4596 KiB
18Elfogadva2/239ms4724 KiB
19Elfogadva2/237ms4804 KiB
20Elfogadva2/235ms4800 KiB
21Elfogadva2/239ms4800 KiB
22Elfogadva2/235ms4948 KiB