Cod sursa(job #423759)

Utilizator RengelBotocan Bogdan Rengel Data 24 martie 2010 11:38:18
Problema Restante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include<stdio.h>
#include<string.h>
#include<cstdlib>

int compare (const void * a, const void * b)
{
  return ( *(int*)a - *(int*)b );
}

FILE *fin=fopen("restante.in","r");
FILE *fout=fopen("restante.out","w");
int a[36001][19],n,dm,i,j,sw,q,aux;
char c[18],x;
int main(){
	fscanf(fin,"%d",&n);
	fscanf(fin,"%c",&x);
	fgets(c,18,fin);
	dm=strlen(c)-1;
	for(i=0;i<dm;i++)
		a[1][i]=c[i]-96;
	qsort(a[1],dm,sizeof(int),compare);
	for(i=2;i<=n;i++){
		for(j=0;j<dm;j++){
			fscanf(fin,"%c",&x);
			a[i][j]=x-96;
		}
		qsort(a[i],dm,sizeof(int),compare);
		fscanf(fin,"%c",&x);
	}
	do{
		sw=0;
		for(i=1;i<n;i++){
			q=0;
			while(a[i][q]==a[i+1][q] && q<dm) q++;
			if(q<dm)
				if(a[i][q]>a[i+1][q])
					for(j=0;j<dm;j++){
						aux=a[i][j];
						a[i][j]=a[i+1][j];
						a[i+1][j]=aux;
						sw=1;
					}
		}
	}while(sw);
	aux=n;
	for(i=1;i<aux;i++){
		q=0;
		while(a[i][q]==a[i+1][q] && q<dm) q++;
		if(a[i][q]==a[i+1][q]){
			n--;
			sw=1;
		}
		if(a[i][q]!=a[i+1][q] && sw==1){
			sw=0;
			n--;
		}
	}
	/*for(i=1;i<=n;i++){
		for(j=0;j<dm;j++)
			fprintf(fout,"%d",a[i][j]);
		fprintf(fout,"\n");
	}*/
	fprintf(fout,"%d",n);
	fclose(fin);
	fclose(fout);
	return 0;
}













//who wants to be alone;