Pagini recente » Cod sursa (job #1954747) | Cod sursa (job #1734477) | Cod sursa (job #1960531) | Cod sursa (job #2155222) | Cod sursa (job #144939)
Cod sursa(job #144939)
#include <stdio.h>
#include <string.h>
char aux, B[36010][20], x[36010][20];
long a, b, i, j, n, num, k, nr;
void merge(long st, long dr)
{
long m = (st + dr) >> 1;
long i, j, k;
if (st == dr)
return;
merge(st, m);
merge(m + 1, dr);
j = m + 1;
k = st;
for (i = st; i <= m || j <= dr;)
if (j > dr || (i <= m && strcmp(x[i], x[j]) < 0))
strcpy(B[k ++], x[i ++]);
else
strcpy(B[k ++], x[j ++]);
for (k = st; k <= dr; k ++)
strcpy(x[k], B[k]);
}
int main()
{
freopen ("restante.in", "rt", stdin);
freopen ("restante.out", "wt", stdout);
scanf("%ld\n", &n);
for (i = 0; i < n; i ++)
fgets(x[i], 20, stdin);
for (i = 0; i < n; i ++)
{
k = strlen(x[i]);
for (a = 0; a < k - 1; a ++)
for (b = a + 1; b < k; b ++)
if (x[i][a] > x[i][b])
aux = x[i][a], x[i][a] = x[i][b], x[i][b] = aux;
}
merge(0, n - 1);
for (i = 0; i < n; i ++)
if (strcmp(x[i], x[i + 1]))
{
if (!nr)
num ++;
nr = 0;
}
else
nr ++;
printf("%ld\n", num);
return 0;
}