Cod sursa(job #125071)

Utilizator DjSefuWrong name DjSefu Data 20 ianuarie 2008 11:14:41
Problema Restante Scor 60
Compilator cpp Status done
Runda preONI 2008, Runda 3, Clasa a 9-a Marime 0.72 kb
#include<stdio.h>
#include<string.h>
FILE *f=fopen("restante.in","r"),
     *g=fopen("restante.out","w");
char a[36000][20],b[36000][20];
int i,j,n,m,c[140],p,max,apar[36000],ok;
int main()
{ fscanf(f,"%d",&n);
  for(i=1;i<=n;++i){ fscanf(f,"%s",&a[i]);
		     m=strlen(a[i]);
		     if(m>max) max=m;
		     for(j='a';j<='z';++j) c[j]=0;
		     for(j=0;j<m;++j) ++c[a[i][j]];
		     p=0;
		     for(j='a';j<='z';++j) while(c[j]) a[i][p]=j,++p,--c[j];
		     ok=1;
		     for(j=1;ok&&j<=apar[0];++j) if(strcmp(a[i],b[j])==0) ok=0,++apar[j];
		     if(ok) strcpy(b[++apar[0]],a[i]),apar[apar[0]]=1;
		   }
  for(i=1;i<=apar[0];++i) if(apar[i]>1)n-=apar[i];
  fprintf(g,"%d\n",n);
  fclose(f);
  fclose(g);
  return 0;
}