Pagini recente » Cod sursa (job #2335356) | Cod sursa (job #3135980) | Cod sursa (job #1304988) | Cod sursa (job #3199607) | Cod sursa (job #159665)
Cod sursa(job #159665)
#include <cstdio>
#include <algorithm>
#define Nmax 36003
#include <string.h>
FILE *fin=freopen("restante.in","r",stdin),
*fout=freopen("restante.out","w",stdout);
using namespace std;
char A[Nmax][20];
unsigned int viz[Nmax];
int comp(int a,int b) {
return !strcmp( A[a], A[b] ); // compari liniile a si b din matrice
}
int n;
void citire()
{
scanf("%d",&n);
fgetc(fin);
for(int i=0; i<n; i++)
scanf(" %s",A[i]);
}
void dica()
{
int nr = n;
for(int i=0; i<n-1; i++)
if(viz[i] == 0)
for(int j=i+1; j<n; j++)
if(strcmp(A[i],A[j]) == 0)
{
if(viz[i] == 0)
viz[i] = viz[j] = 1,nr-=2;
else
viz[j] = 1,nr--;
}
printf("%d\n",nr);
}
void solve()
{
for(int i=0; i<n; i++)
sort(A[i],A[i] + strlen(A[i]));
int b[Nmax],nr=n;
for(int i=0; i<n; i++)
b[i] = i;
sort(b,b+n,comp);
for(int i=0; i< n-1; i++)
if(strcmp(A[b[i]],A[b[i+1]]) == 0)
if(viz[b[i]] == 0)
viz[b[i]]=viz[b[i+1]] =1, nr-=2;
else
viz[b[i+1]] = 1, nr--;
printf("%d\n",nr);
}
int main()
{
citire();
solve();
return 0;
}