Pagini recente » Cod sursa (job #1592136) | Cod sursa (job #579110) | Cod sursa (job #2214889) | Cod sursa (job #2320192) | Cod sursa (job #1312062)
#include <cstdio>
#include <cstring>
#include <algorithm>
#define nmax 40000
#define lgmax 17
using namespace std;
FILE *f=fopen("restante.in","r");
FILE *g=fopen("restante.out","w");
int sol;
char s[nmax][lgmax];
int c[30];
struct elem {long long a;long long b;};
elem v[nmax];
bool diferit (int k,int t)
{
if (v[k].a!=v[t].a) return true;
if (v[k].b!=v[t].b) return true;
return false;
}
bool cmp(const elem &x,const elem &y)
{
if (x.b<y.b) return true;
if (x.b>y.b) return false;
if (x.a<y.a) return true;
return false;
}
int main()
{ unsigned long long put;
int n,i,j,k;
fscanf(f,"%d\n",&n);
for (i=1;i<=n;i++) {
v[i].a=0;v[i].b=0;
fscanf(f,"%s",&s[i]);
k=0;
for (j=0;j<strlen(s[i]);j++) c[s[i][j]-'a']++;
for (j=0;j<26;j++)
while (c[j]!=0) {
c[j]--;
s[i][k++]=j+'a';
}
put=1;
for (j=0;j<strlen(s[i]);j++) {
if (j<10) v[i].a+=1LL*(s[i][j]-'a')*put;
else {if (j==10) put=1;
v[i].b+=1LL*(s[i][j]-'a')*put;
}
put*=26;
}
}
sort(v+1,v+n+1,cmp);
for (i=1;i<=n;i++) if (diferit(i,i-1)==true&&diferit(i,i+1)==true)
sol++;
fprintf(g,"%d\n",sol);
return 0;
}