Cod sursa(job #1817307)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 27 noiembrie 2016 16:59:53
Problema Restante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <cstdio>
#include <algorithm>
#include <bitset>

using namespace std;
int a[36001][17];
int v[36001];
int ff[30];
int compar (int x,int y){
    for (int i=0;i<=a[x][0];i++){
        if (a[x][i]>a[y][i])
            return 0;
        else if (a[x][i]<a[y][i])
            return 1;
    }
    return 2;
}
int main()
{
    FILE *fin=fopen ("restante.in","r");
    FILE *fout=fopen ("restante.out","w");
    int n,i,uni,st,l;
    char c;
    fscanf (fin,"%d\n",&n);
    for (i=1;i<=n;i++){
        c=fgetc (fin);
        while (c!='\n'){
            l=c-'a'+1;
            ff[l]++;
            c=fgetc (fin);
        }
        for (int j=1;j<30;j++){
            while (ff[j]){
                a[i][++a[i][0]]=j;
                ff[j]--;
            }
        }
    }
    for (i=1;i<=n;i++)
        v[i]=i;
    sort (v+1,v+n+1,compar);
    uni=0;
    st=0;
    for (i=1;i<=n;i++){
        if (compar(i,i-1)!=2){
            uni++;
            st=0;
        }
        else
            if (st==0){
                st=1;
                uni--;
            }
    }
    fprintf (fout,"%d",uni);
    return 0;
}