Rezultati

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

Test Točke Porabljen spomin Porabljen čas Status
#1 9/9 3,250 MiB 0,004 s OK
#2 9/9 3,270 MiB 0,004 s OK
#3 9/9 3,270 MiB 0,004 s OK
#4 9/9 3,242 MiB 0,004 s OK
#5 9/9 3,277 MiB 0,004 s OK
#6 9/9 3,277 MiB 0,004 s OK
#7 9/9 3,277 MiB 0,004 s OK
#8 9/9 3,250 MiB 0,004 s OK
#9 9/9 3,250 MiB 0,004 s OK
#10 9/9 3,254 MiB 0,004 s OK
#11 10/10 3,250 MiB 0,004 s OK

Ocenjevani program (jungle.cpp):
#include <iostream>
#include <complex>
#include <iomanip>
#include <climits>
#include <stack>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <string>
#include <vector>
#include <deque>
#include <queue>
#include <set>
#include <map>

#define FOR(i,n) for(int i=0,_n=n;i<_n;i++)
#define FORR(i,s,n) for(int i=s,_n=n;i<_n;i++)
#define mp make_pair
#define pb push_back
#define pob pop_back
#define pii pair<int,int>
#define vi vector<int>
#define fs first
#define sec second
#define fi first
#define se second
#define INF (1LL<<50LL)

#define maxn 10

using namespace std;
typedef long long ll;

const ll MOD = 1000000007LL;

int n,m;
vi roka[maxn];
vi spodaj[maxn];

int igraj(int c){
	if(roka[c].empty()){
		roka[c]=spodaj[c];
		spodaj[c].clear();
		reverse(spodaj[c].begin(),spodaj[c].end());
	}
	spodaj[c].pb(roka[c].back());
	roka[c].pob();
	for(int i=0;i<n;i++){
		if(c==i || spodaj[i].empty())continue;
		if(spodaj[i].back()!=spodaj[c].back())continue;
		//printf("Akcija!\n");
		FOR(j,spodaj[c].size())spodaj[i].pb(spodaj[c][j]);
		spodaj[c].clear();
		reverse(spodaj[i].begin(),spodaj[i].end());
		FOR(j,roka[c].size())spodaj[i].pb(roka[c][j]);
		roka[c]=spodaj[i];
		spodaj[i].clear();
		if(roka[i].empty()){
			printf("%d\n",i+1);
			return 0;
		}
		return 2;
	}
	return 1;
}

int main(){
	scanf("%d",&n);
	vi karte;
	int curr;
	while(scanf("%d",&curr)!=EOF)karte.pb(curr);
	FOR(i,karte.size())roka[i%n].pb(karte[i]);
	int napotezi=0;
	/*FOR(i,n){
		FOR(j,roka[i].size())printf(" %d",roka[i][j]);
		printf("\n");
	}*/
	int st=0;
	while(1){
		st++;
		//if(st>20)break;
		int succ=igraj(napotezi);
		/*printf("Na potezi: %d\n",napotezi);
		FOR(i,n){
			printf("roka: ");
			FOR(j,roka[i].size())printf(" %d",roka[i][j]);
			printf("\n");
			printf("spodaj: ");
			FOR(j,spodaj[i].size())printf(" %d",spodaj[i][j]);
			printf("\n");
		}*/
		if(succ==0)break;
		if(succ==1)napotezi=(napotezi+1)%n;
	}
	return 0;
}