Cod sursa(job #246452)

Utilizator ooctavTuchila Octavian ooctav Data 20 ianuarie 2009 21:36:00
Problema Cutii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
// cutii.cpp : Defines the entry point for the console application.
//

#include <stdio.h>
#include <stdlib.h>
int e[3504];
int f[3500];
bool g[3504];
int comparare(const void * a,const void * b)
{
	return(*(int*)a - *(int*)b);
}
int main()
{
	int n,t,i,j,l,valmax=0,k;
	int a,b,c,d=0,p=1,numar=1;
	FILE *f1,*f2;
	f1=fopen("cutii.in","r");
	f2=fopen("cutii.out","w");
	fscanf(f1,"%d %d",&n,&t);
	for(i=1;i<=n;i++)
		f[i]=1;
	for(i=1;i<=t;i++)
	{
		for(j=1;j<=n;j++)
		{
			fscanf(f1,"%d %d %d",&a,&b,&c);
			a=a*100+b*10+c;
			e[j]=a;
		}
		qsort(e,n+1,sizeof(int),comparare);
		for(j=1;j<=n;j++)
		{
			if(g[j])
				continue;
			numar=1;
			p=1;
			for(k=j+p;k<=n;k++)
			{
				if(g[k])
					continue;
				for(l=k;l<=n;l++)
					if(e[j]%100<e[l]%100 && e[j]%10<e[l]%10)
					{
						numar++;
						e[j]=e[l];
						g[l]=true;
					}
					p++;
					if(numar>f[j])
						f[j]=numar;
					numar=1;
			}
		}
		for(j=1;j<=n;j++)
		{
			if(f[j]>d)
				d=f[j];
			e[j]=0;
			f[j]=1;
			g[j]=false;
		}
		fprintf(f2,"%d\n",d);
		d=0;
	}
	fclose(f1);
	fclose(f2);
	return 0;
}