Cod sursa(job #25059)

Utilizator supernovaMihai Pantis supernova Data 4 martie 2007 10:20:22
Problema Balanta Scor 90
Compilator c Status done
Runda preONI 2007, Runda 3, Clasa a 10-a Marime 1.18 kb
#include <stdio.h>

int n,m,a[2100],u[2100][2100],g[2100][2100],truths,poz;

void citire(void)
{
	int i,j,k,x;
	FILE *f=fopen("balanta.in","r");

	fscanf(f,"%d %d ",&n,&m);
	for(i=1;i<=m;i++) for(j=1;j<=n;j++) { u[i][j]=0; g[i][j]=0; }
	for(i=1;i<=m;i++)
	{
		fscanf(f,"%d",&k);
		for(j=1;j<=k;j++) 
		{
			fscanf(f,"%d",&x);
			u[i][x]=2;
			g[i][x]=1;
		}
		for(j=1;j<=k;j++) 
		{
			fscanf(f,"%d",&x);
			u[i][x]=1;
			g[i][x]=2;
		}
		fscanf(f,"%d",&x);a[i]=x; // the real thing that happens ..
	}
}

void print(void)
{
	int i,j;

	for(i=1;i<=m;i++)
	{
		for(j=1;j<=n;j++) printf("%d ",u[i][j]);
		printf("\n");
	}
	printf("\n\n");
	for(i=1;i<=m;i++)
	{
		for(j=1;j<=n;j++) printf("%d ",g[i][j]);
		printf("\n");
	}
	printf("\n\n");
}

void output(int poz)
{
	FILE *f=fopen("balanta.out","w");
	if(truths!=1) poz=0;
	fprintf(f,"%d\n",poz);
	fclose(f);
}

int main(void)
{
	int i,j,vf_u,vf_g;
	citire();

	// print();
	
	for(j=1;j<=n;j++)
	{
		vf_u=1;vf_g=1;
		for(i=1;i<=m;i++)
			if(u[i][j]!=a[i]) vf_u=0;
		for(i=1;i<=m;i++)
			if(g[i][j]!=a[i]) vf_g=0;
		if(vf_u || vf_g) { truths++;poz=j; }
	}


	output(poz);
	return 0;
}