Cod sursa(job #472236)

Utilizator darrenRares Buhai darren Data 23 iulie 2010 15:18:38
Problema Restante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <cstring>
#include <fstream>
#include <algorithm>

using namespace std;

const int SIZE = 36001;

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

void Read();
void Solve();
void Write();

int n, res, in[SIZE];
char v[SIZE][18];

bool cmp(int i1, int i2)
{
    if (strlen(v[in[i1]]) != strlen(v[in[i2]]))
        return strlen(v[in[i1]]) < strlen(v[in[i2]]);
    return strcmp(v[in[i1]], v[in[i2]]) < 0;
}

int main()
{
    Read();
    Solve();
    Write();
}

void Read()
{
    fin >> n;
    for (int i = 1; i <= n; ++i)
    {
        fin >> v[i];
        sort(v[i], v[i] + strlen(v[i]));

        in[i] = i;
    }
}

void Solve()
{
    sort(in + 1, in + n + 1, cmp);
    for (int i = 1; i <= n; ++i)
        if ( (i == 1 || strcmp(v[in[i]], v[in[i - 1]]) != 0) && (i == n || strcmp(v[in[i]], v[in[i + 1]]) != 0) )
            ++res;
}

void Write()
{
    fout << res;
}