Cod sursa(job #143112)

Utilizator toni2007Pripoae Teodor Anton toni2007 Data 25 februarie 2008 22:31:07
Problema Restante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.86 kb
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
//int v[36009];
//char m[36009][20];
struct cuv{
	int v;
	char s[20];
};
cuv x[36010];
/*int comp(int a, int b) {
	if(strcmp(m[a],m[b])==1) return 1; // compar liniile a si b din matrice
	else return 0;
}*/
int compara1(const void *a, const void *b)
{
    struct cuv *ia = (struct cuv *)a;
    struct cuv *ib = (struct cuv *)b;
    return strcmp(ia->s, ib->s);
} 

int compara2(const void *a, const void *b)
{
    const char *ia = (const char *)a; 
    const char *ib = (const char *)b;
    return *ia  - *ib; 
}
/*void transform(int l){
	int x;
	x=strlen(m[l]);
	sort(m[l],m[l]+x-1);
}
int platouri(int n) //returnez numarul de platouri  
    {  
     int sol=0,i;  
      for(i=0;i<n-1;++i)  
     if(strcmp(m[v[i]],m[v[i+1]])!=0) sol++;  
     else  
		while(strcmp(m[v[i]],m[v[i+1]])==0) ++i;  
      if(strcmp(m[v[n-1]],m[v[n-2]])!=0) sol++;  
     return sol;  
     }*/  
int main(){
	int i,n,cn,sol=0;//,frecv[36009]={0};
	freopen("restante.in","r",stdin);
	freopen("restante.out","w",stdout);
	scanf("%d\n",&n);
	cn=n;
	for(i=0;i<n;i++) {
		gets(x[i].s);
		x[i].v=strlen(x[i].s);
		//transform(i);
		qsort(x[i].s,x[i].v,sizeof(x[i].s[0]),compara2);
	}
	//for(i=0;i<n;i++)
	//	v[i]=i;
	//sort(v,v+n,comp);
    qsort(x,n,sizeof(x[0]),compara1);
//	for(i=0;i<n;i++)
//		printf("%s\n",m[v[i]]);
	
	//sol=platouri(n);
	//for(i=0;i<n-1;i++)
		//if(strcmp(m[v[i]],m[v[i+1]])==0) { frecv[v[i]]=1; frecv[v[i+1]]=1;}
//	for(i=0;i<n;i++)
//		printf("%s\n",m[v[i]]);
	//for(i=0;i<n;i++)
		//if(frecv[i]==0) sol++;
	if (strcmp(x[0].s,x[1].s)!=0)
		++sol;
	if (strcmp(x[n-2].s,x[n-1].s)!=0)
		++sol;
	for (i=1;i<n-1;++i)
		if (strcmp(x[i-1].s,x[i].s)!=0 && strcmp(x[i].s,x[i+1].s)!=0)
			++sol;
	printf("%d",sol);
	return 0;
}