Pagini recente » Cod sursa (job #2634031) | Cod sursa (job #2259350) | Cod sursa (job #1594027) | Cod sursa (job #1310586) | Cod sursa (job #127998)
Cod sursa(job #127998)
#include <stdio.h>
#include <string.h>
#define Nmax 36002
#define Lmax 18
int n, i, rez;
char c[Nmax][Lmax];
void sort(char *);
void sort(int,int);
int main()
{
freopen("restante.in", "r", stdin);
scanf("%d\n", &n);
for (i=1; i<=n; i++) scanf("%s\n", &c[i]);
fclose(stdin);
for (i=1; i<=n; i++) sort(c[i]);
sort(1,n);
for (i=1; i<=n; i++)
{
if (strcmp(c[i],c[i+1])==0)
for (i++; strcmp(c[i],c[i+1])==0; i++);
else rez++;
}
freopen("restante.out", "w", stdout);
printf("%d\n", rez);
fclose(stdout);
return 0;
}
void sort(char *d)
{
int i;
char temp;
for (int l=strlen(d), ok=1; ok && l; l--)
{
ok=0;
for (i=0; i<l-1; i++)
if (d[i]>d[i+1])
{
temp=d[i]; d[i]=d[i+1]; d[i+1]=temp;
ok=1;
}
}
}
void sort(int p, int q)
{
int st=p, dr=q;
char x[Lmax+1]; memset(x, 0, 17);
memcpy(x,c[st],strlen(c[st]));
while (st<dr)
{
while (st<dr && strcmp(x,c[dr])<=0) dr--;
memset(c[st],0,strlen(c[st])+1);
memcpy(c[st],c[dr],strlen(c[dr]));
while (st<dr && strcmp(x,c[st])>=0) st++;
memset(c[dr],0,strlen(c[dr])+1);
memcpy(c[dr],c[st],strlen(c[st]));
}
memcpy(c[st],x,strlen(x));
if (st+1<q) sort(st+1,q);
if (st-1>p) sort(p,st-1);
}