Cod sursa(job #1297666)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 22 decembrie 2014 11:19:22
Problema Restante Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include<fstream>
#include<algorithm>
#include<cstring>
using namespace std;

ifstream fin("restante.in");
ofstream fout("restante.out");

int n, i, j, nr, ok;
int c[36012], v[36002];
char a[36001][20];

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(){
    fin>> n;
    for(i = 1; i <= n; i++){
        fin >> a[i];
        c[i] = strlen(a[i]);
        sort(a[i], a[i] + c[i]);
        v[i] = i;
    }
    sort(v + 1, v + n + 1, cmp);
    for(i = 1; i <= n; i++){
        ok = 0;
        if(c[v[i]] == c[v[i + 1]]){
            ok = 1;
            for(j = 0; j < c[v[i]]; j++){
                if(a[v[i]][j] != a[v[i + 1]][j]){
                    ok = 0;
                    break;
                }
            }
        }
        if(ok == 1){
            i++;
        }
        else{
            ok = 0;
            if(v[v[i]] == c[v[i - 1]]){
                ok = 1;
                for(j = 0; j < c[v[i]]; j++){
                    if(a[v[i]][j] != a[v[i - 1]][j]){
                        ok = 0;
                        break;
                    }
                }
            }
            if(ok == 0){
                nr ++;
            }
        }
    }
    fout << nr;
    return 0;
}