Pentru această operație este nevoie să te autentifici.
Cod sursă (job #237629)
Utilizator |
|
IP | ascuns |
---|---|---|---|
Problemă | Domino | Compilator | cpp | 1,44 kb |
Rundă | Simulare olimpiada clasele 7/8 grea | Status | evaluat |
Dată | 20 apr. 2016 16:05:00 | Scor | 88 |
#include <cstdio>
#include <deque>
using namespace std;
FILE *f=fopen("domino.in","r");
FILE *g=fopen("domino.out","w");
int dq[10005];
bool rotit[10005];
int E,R,e;
int N,i;
int a,b,j;
int nr;
bool ro;
int main()
{
fscanf(f,"%d %d %d",&N,&R,&E);
for(i=1;i<=N;i++)
{
fscanf(f,"%d %d",&a,&b);
if(a*10+b>=b*10+a)
{
nr=a*10+b;
ro=0;
}
else
{
nr=b*10+a;
ro=1;
}
j=dq[0];
e=E;
while(dq[j]<nr&&j>0&&e)
{
R+=rotit[j];
j--;
e--;
}
if(R>0&&ro)
{
R--;
E=e;
dq[j+1]=nr;
rotit[j+1]=1;
dq[0]=j+1;
}
else if(ro==0)
{
E=e;
dq[j+1]=nr;
dq[0]=j+1;
rotit[dq[0]]=0;
}
else
{
nr=a*10+b;
j=dq[0];
e=E;
while(dq[j]<nr&&j>0&&e)
{
R+=rotit[j];
j--;
e--;
}
dq[j+1]=nr;
dq[0]=j+1;
rotit[dq[0]]=0;
E=e;
}
}
while(E)
{dq[0]--;E--;}
if(dq[0]==0)
fputc('0',g);
for(i=1;i<=dq[0];i++)
fprintf(g,"%d",dq[i]);
fclose(f);
fclose(g);
return 0;
}