Rezultati

Up. imeNalogaJezikRezultatČas oddaje
fedja-2017 Jungle Speed C++ 100/100OK 11. maj '17 @ 19:19

Test Točke Porabljen spomin Porabljen čas Status
#1 9/9 3,273 MiB 0,004 s OK
#2 9/9 3,277 MiB 0,004 s OK
#3 9/9 3,277 MiB 0,004 s OK
#4 9/9 3,281 MiB 0,004 s OK
#5 9/9 3,277 MiB 0,004 s OK
#6 9/9 3,184 MiB 0,004 s OK
#7 9/9 3,195 MiB 0,004 s OK
#8 9/9 3,195 MiB 0,004 s OK
#9 9/9 3,281 MiB 0,004 s OK
#10 9/9 3,191 MiB 0,004 s OK
#11 10/10 3,281 MiB 0,004 s OK

Ocenjevani program (jungle.cpp):
#include<iostream>
#include <cstdint>
#include <vector>
using namespace std;

typedef vector<vector<int>> SkladKart;

void dumpkarte (SkladKart& sklad)
{
	for (int igr = 0; igr < sklad.size(); ++igr) {
		cout << igr << ": ";
		for (auto karta : sklad.at(igr))
			cout << karta << ", ";
		cout << endl;
	}
}

int main()
{
	int N, karta, M = 0;
	scanf ("%d", &N);

	SkladKart roke, odlozene;
	for (int igr = 0; igr < N; ++igr) {
		roke.emplace_back ();
		odlozene.emplace_back ();
	}

	while (1 == scanf ("%d", &karta)) {
		roke.at(M % N).push_back (karta);
		++M;
	}

	//dumpkarte(roke);

	for (int igralec = 0; ; igralec = ((igralec + 1) % N)) {// Na potezi
		vector<int> &kartevroki = roke.at(igralec);

		if (kartevroki.empty()) {
			kartevroki.insert(kartevroki.end(), odlozene.at(igralec).rbegin(), odlozene.at(igralec).rend());
			if (kartevroki.empty()) {
				cout << igralec + 1 << endl;
				break;
			}
		}

		karta = kartevroki.back(); kartevroki.pop_back();
		odlozene.at(igralec).push_back (karta);

		for (int soigralec = 0; soigralec < N; ++soigralec) {
			vector<int> &soodlozene = odlozene.at(soigralec);
			if (soigralec != igralec && !soodlozene.empty() && karta == soodlozene.back()) {
				soodlozene.insert(soodlozene.end(), odlozene.at(igralec).begin(), odlozene.at(igralec).end());
				odlozene.at(igralec).clear();
				kartevroki.insert(kartevroki.begin(), soodlozene.rbegin(), soodlozene.rend());
				soodlozene.clear();

 				// Se enkrat na potezi
				if (0 == igralec)
					igralec = N - 1;
				else
					igralec -= 1;
				break;
			}
		}
	}
	
}