Cod sursa(job #1715730)

Utilizator giotoPopescu Ioan gioto Data 11 iunie 2016 13:56:18
Problema Restante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

char c,a[36002][21];
bool ok,f[36002];
int sol,n,i,nr[36002],poz[36002];
int cmp(int x, int y){
    int i=0;
    while(a[x][i]==a[y][i])
        ++i;
    return a[x][i] < a[y][i];
}
int main()
{
    freopen("restante.in", "r", stdin);
    freopen("restante.out", "w", stdout);
    scanf("%d", &n);
    scanf("%c", &c);
    for(i=1;i<=n;++i){
        scanf("%s", a[i]);
        nr[i]=strlen(a[i]);
        sort(a[i],a[i]+nr[i]);
        poz[i]=i;
    }
    sort(poz+1,poz+n+1,cmp);
    sol=0;
    for(i=1;i<=n;++i){
        ok=1;
        if(nr[poz[i]]==nr[poz[i+1]]){
            ok=0;
            if(strcmp(a[poz[i]],a[poz[i+1]])!=0)
                ok=1;

        }
        if(ok==0)
            ++i;
        else {
            if(nr[poz[i]]==nr[poz[i-1]]){
                ok=0;
                if(strcmp(a[poz[i]],a[poz[i-1]])!=0)
                    ok=1;

            }
            if(ok==1) ++sol;
        }
    }printf("%d", sol);
    return 0;
}