Cod sursa(job #1715720)

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

char c,a[36002][21];
bool f[36002];
int sol,n,i,nr[36002],poz[36002];
int cmp(int x,int y){
    if(strcmp(a[x],a[y])>0)
        return 0;
    return 1;
}
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=n;
    for(i=1;i<n;++i){
        if(f[poz[i]]==0){
            for(int j=i+1;j<=n;++j){
                if(nr[poz[j]]>nr[poz[i]])
                    break;
                if(strcmp(a[poz[i]],a[poz[j]])==0){
                    f[i]=1;--sol;
                    f[j]=1;
                }
            }
            if(f[i]==1) --sol;
        }
    }printf("%d", sol);
    return 0;
}