Pagini recente » Cod sursa (job #229821) | Cod sursa (job #1100117) | Cod sursa (job #181647) | Cod sursa (job #3144833) | Cod sursa (job #159661)
Cod sursa(job #159661)
#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[i] == 0)
viz[i]=viz[i+1] =1, nr-=2;
else
viz[i+1] = 1, nr--;
printf("%d\n",nr);
}
int main()
{
citire();
solve();
return 0;
}