Cod sursa(job #185550)

Utilizator MirageRobert Sandu Mirage Data 25 aprilie 2008 17:23:29
Problema Restante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int comp(const void *a,const void *b){
	return *(char *)a-*(char *)b;
}
int cmp(const void *a, const void *b){
	return strcmp((char *)a,(char *)b);
}
int scomp(char *v,char *a,int l){
	if(strlen(a)!=l)
		return 1;
	for(int i=0;i<l;++i)
		if(v[i]!=a[i])
			return 1;
	return 0;
}
int main () {
	freopen("restante.in","r",stdin);
	freopen("restante.out","w",stdout);
	int i,n,j,c,nr=0,ok=1,z,l=0;;
	char v[20],m[36010][20],x[20];
	scanf("%d\n",&n);
	for(i=0;i<n;++i){
		fgets(v,20,stdin);
		for(j=0;v[j]!='\0';++j);
		if(v[j-1]=='\n')
			c=j-1;
		else
			c=j;
		qsort(v,c,sizeof(v[0]),comp);
		for(j=0;j<c;++j)
			m[i][j]=v[j];
	}
	qsort(m,n,sizeof(m[0]),cmp);
	for(i=0;i<n;++i){
		z=scomp(x,m[i],l);
		if(z!=0){
			ok=1;
			++nr;
			for(j=0;m[i][j]>='a'&&m[i][j]<='z';++j)
				x[j]=m[i][j];
			l=j;
		}
		else
			if(ok){
				--nr;
				ok=0;
			}
	}
	printf("%d\n",nr);
	return 0;
}