Cod sursa(job #238071)

Utilizator PavelRazvanPavel Razvan PavelRazvan Data 31 decembrie 2008 13:37:35
Problema Restante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.5 kb
#include<stdio.h>
#include<string.h>
int n,k,i,j,d;
char s[36020][17],*aux,aux2;
int divide2 (int p,int q)
{
    int st,dr;
    char x[36020];
    st=p;
    dr=q;
    strcpy(x,s[p]);
    while (st<dr)
    {
        while (st<dr && strcmp(s[dr],x)>=0)
            --dr;
        s[k][st]=s[k][dr];
        while (st<dr && strcmp(s[dr],x)<=0)
            ++st;
            
    strcpy(s[dr],s[st]);
    strcpy(s[st],x);
    }
    return st;
}
int qsort2 (int p, int q)
{
    int m;
    m=divide2 (p,q);
    if (m-1>p)
        qsort2 (p,m-1);
    if (m+1<q)
        qsort2 (m+1,q);
}
int divide (int p,int q)
{
    int st,dr;
    char x;
    st=p;
    dr=q;
    x=s[k][p];
    while (st<dr)
    {
        while (st<dr && s[k][dr]>=x)
            --dr;
        s[k][st]=s[k][dr];
        while (st<dr && s[k][st]<=x)
            ++st;
        s[k][dr]=s[k][st];
        s[k][st]=x;
    }
    return st;
}
int qsort (int p, int q)
{
    int m;
    m=divide (p,q);
    if (m-1>p)
        qsort (p,m-1);
    if (m+1<q)
        qsort (m+1,q);
}
int main ()
{
    freopen("restante.in","r",stdin);
    freopen("restante.out","w",stdout);
    scanf("%d\n",&n);
    for(k=1;k<=n;++k)
    {
        scanf("%s",&s[k]);
        qsort(0,strlen(s[k])-1);
    }
    qsort2(1,n);
    if (strcmp (s[1],s[2]))
    ++d;
    if (strcmp (s[n-1],s[n]))
    ++d;
    for (i=2;i<n;++i)
    if (strcmp (s[i-1],s[i]) && strcmp (s[i],s[i+1]))
    ++d;
    printf("%d",d);
    return 0;
}