Cod sursa(job #394893)

Utilizator dead_knightTitei Paul Adrian dead_knight Data 11 februarie 2010 19:49:11
Problema Restante Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
using namespace std;
#include<cstdio>
#include<fstream>
#include<iostream>
#include<algorithm>
#include<cstring>

int a[36005][18],n,rez=0,b[36005];

void citire()
{
    ifstream fin("restante.in");
    fin>>n;
    char c[17];
    int i;
    fin.getline(c,100);
    for(int j=1;j<=n;j++)
    {
        fin.getline(c,20);
        for(i=0;c[i];i++)
            a[j][i+1]=int(c[i]);
        a[j][0]=i;
        sort(a[j]+1, a[j]+a[j][0]+1);
        b[j]=1;
    }
}

void afis()
{
    int i,j;
    for(i=1;i<=n;i++)
        printf("%d ", b[i]);
    printf("\n");
    printf("%d\n",n);
    for(i=1;i<=n;i++)
    {
        for(j=0;j<=a[i][0];j++)
            printf("%d ", a[i][j]);
        printf("\n");
    }
    printf("\n");
}

int egal(int i1,int i2)
{

    if(a[i1][0]!=a[i2][0])
        return 0;
    else
    {
        int i;
        for(i=1;i<=a[i1][0];i++)
        {
            if(a[i1][i]!=a[i2][i])
            {

                return 0;
            }
        }

        return 1;
    }
}

int main()
{
    freopen("restante.out","w",stdout);
    citire();
    //afis();
    int i,j;
    for(i=1;i<n;i++)
        for(j=i+1;j<=n;j++)
        {
            if(egal(i,j)==1)
                b[i]=0,b[j]=0;
        }
    for(i=1;i<=n;i++)
        if(b[i]==1)
            rez++;
    printf("%d", rez);
    return 0;
}