Cod sursa(job #741403)

Utilizator SteveStefan Eniceicu Steve Data 25 aprilie 2012 22:37:41
Problema Restante Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.47 kb
#include <fstream>
#include <algorithm>
#include <cstring>

using namespace std;

typedef struct
{
    char miu[16];
} cutzu;

int N;
int a, good = 1, cnt = 1;
cutzu v[36010];

void Citire ()
{
    ifstream fin ("restante.in");
    fin >> N;
    fin >> v[0].miu;
    a = strlen (v[0].miu);
    sort (v[0].miu, v[0].miu + a);
    for (int i = 1; i < N; i++)
    {
        fin >> v[i].miu;
        a = strlen (v[i].miu);
        sort (v[i].miu, v[i].miu + a);
    }
    fin.close ();
}

inline int cmp (cutzu a, cutzu b)
{
    int k = strlen (a.miu);
    int l = strlen (b.miu);
    if (l < k)
    {
        for (int i = 0; i < l; i++)
        {
            if (a.miu[i] < b.miu[i]) return 1;
            if (b.miu[i] < a.miu[i]) return 0;
        }
        return 1;
    }
    else
    {
        for (int i = 0; i < k; i++)
        {
            if (a.miu[i] < b.miu[i]) return 1;
            if (b.miu[i] < a.miu[i]) return 0;
        }
        return 0;
    }
}

void Business ()
{
    sort (v, v + N, cmp);
    for (int i = 1; i < N; i++)
    {
        if (!strcmp (v[i].miu, v[i - 1].miu))
        {
            if (good) cnt--;
            good = 0;
        }
        else
        {
            good = 1;
            cnt++;
        }
    }
}

void Scriere ()
{
    ofstream fout ("restante.out");
    fout << cnt;
    fout.close ();
}

int main ()
{
    Citire ();
    Business ();
    Scriere ();
    return 0;
}