Cod sursa(job #690866)

Utilizator beldeabogdanBogdan Beldea beldeabogdan Data 25 februarie 2012 23:32:23
Problema Restante Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>
#include <algorithm>
using namespace std;
struct cuvant {
	char a[20];
	int l;
	bool o;
};
cuvant v[36005];
char a[20];
int n,i,nr,l;
int leng (char a[20]) {
	int l=0;
	for (int i=0;i<=18;i++) if (a[i]!=(char)0) l=i+1;
	return l;
}
bool check (cuvant &a,cuvant &b) {
	for (int i=0;i<a.l;i++) if (a.a[i]!=b.a[i]) return 0;
	return 1;
}
bool cmp(cuvant a,cuvant b) {
	if (a.l<b.l) return 1;
	else if (a.l>b.l) return 0;
	int i;
	for (i=0;i<a.l;i++) if (a.a[i]<b.a[i]) return 1;
	return 0;
}
int main() {
	freopen("restante.in","r",stdin);
	freopen("restante.out","w",stdout);
	scanf("%d",&n);
	for (i=1;i<=n;i++) {
		scanf("%s",v[i].a);
		v[i].l=leng(v[i].a);
		sort(v[i].a,v[i].a+v[i].l);
	}
	sort(v+1,v+n+1,cmp);
	for (i=1;i<n;i++) if (check(v[i],v[i+1])) v[i].o=v[i+1].o=true;
	for (i=1;i<=n;i++) if (!v[i].o) nr++;
	printf("%d",nr);
	return 0;
}