Pagini recente » Cod sursa (job #1515806) | Cod sursa (job #475210) | Cod sursa (job #2376127) | Cod sursa (job #1397506) | Cod sursa (job #310193)
Cod sursa(job #310193)
#include <stdio.h>
#include <algorithm>
#include <stdlib.h>
#include <string.h>
#define N 36005
#define P 20
using namespace std;
char s[P];
int v[N][P];
int n;
void citire()
{
scanf("%d\n",&n);
int i,t,j;
for (i=1; i<=n; i++)
{
fgets(s+1,P,stdin);
t=(int)strlen(s+1);
for (j=1; j<=t && s[j]!='\n'; j++)
v[i][++v[i][0]]=(int)s[j]-96;
}
}
void sortare_litere()
{
int i,j,x[P];
for (i=1; i<=n; i++)
{
for (j=1; j<=v[i][0]; j++)
x[j]=v[i][j];
sort(x+1,x+v[i][0]+1);
for (j=1; j<=v[i][0]; j++)
v[i][j]=x[j];
}
}
void sortare_cuvinte()
{
int i,j,k,x[N],t,pmin;
for (i=1; i<n; i++)
{
pmin=i;
for (j=i+1; j<=n; j++)
{
if (v[j][0]<v[pmin][0])
pmin=j;
else
if (v[pmin][0]==v[j][0])
for (k=1; k<=v[pmin][0]; k++)
{
if (v[j][k]<v[pmin][k])
{
pmin=j;
break;
}
else
if (v[j][k]==v[pmin][k])
;
else
break;
}
}
if (pmin!=i)
{
x[0]=v[i][0];
for (j=1; j<=v[i][0]; j++)
x[j]=v[i][j];
for (j=1; j<=v[pmin][0]; j++)
v[i][j]=v[pmin][j];
t=v[pmin][0];
v[pmin][0]=x[0];
v[i][0]=t;
for (j=1; j<=x[0]; j++)
v[pmin][j]=x[j];
}
}
}
void rezolvare()
{
int i,j,rez=1,identic,pur=1;
for (i=2; i<=n; i++)
{
if (v[i][0]==v[i-1][0])
{
identic=1;
for (j=1; j<=v[i][0]; j++)
if (v[i][j]!=v[i-1][j])
{
identic=0;
break;
}
if (identic==0)
{
rez++;
pur=1;
}
else
if (pur)
{
rez--;
pur=0;
}
}
else
{
rez++;
pur=1;
}
}
printf("%d\n",rez);
}
int main()
{
freopen("restante.in","r",stdin);
freopen("restante.out","w",stdout);
citire();
sortare_litere();
sortare_cuvinte();
rezolvare();
return 0;
}