Pagini recente » Cod sursa (job #389291) | Cod sursa (job #64813)
Cod sursa(job #64813)
#include <stdio.h>
#include <stdlib.h>
#define FIN "prieteni.in"
#define FOUT "prieteni.out"
#define FOK "prieteni.ok"
int N, A[1002],S, B[1002],st,dr,x,s,p,S2,fin,lin,Q;
char chrs;
void result(char msg[], int p)
{
fprintf(stderr, msg);
printf("%d", p);
exit(0);
}
int functie()
{
if (fin==S)
result("Keep up the good work", 10);
else
result("Wrong Answer", 0);
return 0;
}
int main(void)
{
int i, a, b;
FILE *f;
f = fopen(FIN, "r");
if (!f) result("Fisier de intrare lipsa!", 0);
if (fscanf(f, "%d", &N) != 1)
result("Fisier de intrare corupt!", 0);
for(i=1;i<=N;i++)
{
if (fscanf(f,"%d",&x)!=1) result("Fisier de intrare corupt!", 0);
A[x]++;
}
f = fopen(FOK, "r");
if (!f) result("Fisier ok lipsa!", 0);
if (fscanf(f, "%d", &S) != 1)
result("Fisier ok corupt!", 0);
st=N;
f = fopen(FOUT, "r");
while (!feof(f))
{
Q=0;
S2=0;
fscanf(f, "%d", &Q);
fscanf(f,"%c",&chrs);
if (chrs=='\n') fscanf(f,"\n");
if (feof(f))
functie();
if (chrs!='\n')
fscanf(f, "%d", &S2);
lin++;
if (lin%2)
{
if (S2==0)
{
A[Q]--;
B[Q]++;
}
else
if ((A[Q]>0)&&(A[S2]>0))
{
A[Q]--;
A[S2]--;
B[Q]++;
B[S2]++;
}
else
result("Traversare imposibila", 0);
}
else
{
if (S2==0)
{
A[Q]++;
B[Q]--;
}
else
if ((B[Q]>0)&&(B[S2]>0))
{
B[Q]--;
B[S2]--;
A[Q]++;
A[S2]++;
}
else
result("Traversare imposibila", 0);
}
if (Q>S2) fin+=Q;
else fin+=S2;
}
return 0;
}