Cod sursa(job #2412161)

Utilizator VladTZYVlad Tiganila VladTZY Data 21 aprilie 2019 18:38:43
Problema Restante Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <fstream>
#include <cstring>

#define NMAX 36005

using namespace std;

ifstream f("restante.in");
ofstream g("restante.out");

int n,i,m,k,okF,nrcuv;
int v[NMAX],y[35];
char x[25];
int a[NMAX][35];

void cleary()
{
    for(int i=0;i<=30;i++)
        y[i]=0;
}

void makey(char x[],int n)
{
    for(int i=0;i<n;i++)
        y[x[i]-'a']++;
}

void add(char x[],int n)
{
    a[nrcuv][30]=n;
    for(int i=0;i<n;i++)
        a[nrcuv][x[i]-'a']++;
}

int check(int x[],int n,int &okF)
{
    int ok=0;
    for(int i=1;i<=nrcuv;i++)
    {
        if(a[i][30]==n)
        {
            ok=0;
            for(int j=0;j<28;j++)
            {
                //vedem daca e acelasi
                if(a[i][j]!=x[j])
                {
                    ok=1;
                    break;
                }
            }
            if(ok==0)
            {
                okF=v[i];
                v[i]=1;
                return true;
            }
        }
    }
    return false;
}

int main()
{
    f>>n;f.get();
    for(i=1;i<=n;i++)
    {
        f.getline(x,20);
        m=strlen(x);
        okF=0;
        cleary();
        makey(x,m);
        if(check(y,m,okF))
        {
            if(okF==0)
                k--;
        }
        else
        {
            k++;nrcuv++;
            add(x,m);
        }
    }
    g<<k;
}