Cod sursa(job #393936)

Utilizator dead_knightTitei Paul Adrian dead_knight Data 10 februarie 2010 10:49:24
Problema Restante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 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],ch;
    int i,j;
    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);
    }
}

void afis()
{
    int i,j;
    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");
        b[i]=1;
    }
}

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)==0)
                b[i]=0,b[j]=0;
    for(i=1;i<=n;i++)
        if(b[i]==1)
            rez++;
    printf("%d", rez);
    return 0;
}