Cod sursa(job #397405)

Utilizator dead_knightTitei Paul Adrian dead_knight Data 16 februarie 2010 21:31:16
Problema Restante Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
using namespace std;
#include<cstdio>
#include<fstream>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#define MAX 360005

char c[MAX][18];
int n,ord[MAX];

void citire()
{
    ifstream fin("restante.in");
    fin>>n;
    char ch[18];
    fin.getline(ch,20);
    for(int i=1;i<=n;i++)
    {
        fin.getline(c[i],20);
        sort(c[i],c[i]+strlen(c[i]));
    }
}

void afis()
{
    printf ("%d\n",n);
    for(int i=1;i<=n;i++)
        printf("%s\n",c[ord[i]]);
}

int cmp(int i,int j)
{
    int x=strcmp(c[i],c[j]);
    if(x>0)
        return 0;
    else if(x<=0)
        return 1;
}

void sortstr()
{
    int i,j;
    for(i=1;i<=n;i++)
        ord[i]=i;
    sort(ord+1,ord+n+1,cmp);
}

int main()
{
    freopen("restante.out","w",stdout);
    citire();
    sortstr();
    int rez=n;
    for(int i=1;i<n;i++)
        if(strcmp(c[ord[i]],c[ord[i+1]])==0)
        {
            rez-=2;
            i++;
            while(strcmp(c[ord[i]],c[ord[i+1]])==0)
            {
                rez--;
                i++;
            }
        }
    printf("%d", rez);
    //afis();
    return 0;
}