Pagini recente » Cod sursa (job #2281398) | Cod sursa (job #1816667) | Cod sursa (job #1492217) | Cod sursa (job #60636) | Cod sursa (job #2928993)
#include<fstream>
#include<algorithm>
#include<vector>
#include<cstring>
//#include<iostream>
using namespace std;
ifstream cin("restante.in");
ofstream cout("restante.out");
char s[36005][20],s1[30];
void mergea(int st,int mij,int dr)
{
int i=st,j=mij+1;
char c[36005][20];int k=0;
while(i<=mij&&j<=dr)
{
if(strcmp(s[i],s[j])>0)
{
k++;
strcpy(c[k],s[j]);
j++;
}
else
{
k++;
strcpy(c[k],s[i]);
i++;
}
}
while(i<=mij)
{
k++;
strcpy(c[k],s[i]);
i++;
}
while(j<=dr)
{
k++;
strcpy(c[k],s[j]);
j++;
}
k=1;
for( i=st;i<=dr;i++,k++)
{
strcpy(s[i],c[k]);
}
}
void sorta(int st,int dr)
{
if(dr-st<=1)
{
if(strcmp(s[st],s[dr])>0)
swap(s[st],s[dr]);
}
else
{
int mij=(st+dr)/2;
sorta(st,mij);
sorta(mij+1,dr);
mergea(st,mij,dr);
}
}
int main() {
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>s1;
sort(s1,s1+strlen(s1));
strcpy(s[i],s1);
}
int cnt=0;
sorta(1,n);
strcpy(s[0],"1");
strcpy(s[n+1],"2");
for(int i=1;i<=n;i++)
if(strcmp(s[i-1],s[i])!=0&&strcmp(s[i],s[i+1])!=0)
cnt++;
cout<<cnt;
}