Cod sursa(job #2542397)

Utilizator TudosieRazvanTudosie Marius-Razvan TudosieRazvan Data 9 februarie 2020 21:41:11
Problema Restante Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.55 kb
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define NMAX 36000
using namespace std;

int n,k,original;
char cuvinte[17];
FILE *fin,*fout;

struct unice
{
    int ap;
    int lung;
    int litere[17];
} v[NMAX+3];

void caut_structura(int h[],int lungime)
{
    for(int i=1; i<=k; i++)
    {
        if(v[i].lung==lungime)
        {
            int ok=1;
            for(int j=0; j<=lungime; j++)
            {
                if(v[i].litere[j]!=h[j])
                {
                    ok=0;
                }
            }
            if(ok==1)
            {
                v[i].ap++;
                if(v[i].ap==2)
                {
                    original--;
                }
                return;
            }
        }
    }
    k++;
    v[k].lung=lungime;
    original++;
    for(int j=0; j<=lungime; j++)
    {
        v[k].litere[j]=h[j];
    }
    v[k].ap=1;
}

void afis(int h[],int nivel)
{
    for(int i=0; i<nivel; i++)
    {
        fprintf(fout,"%d",h[i]);
    }
    fprintf(fout,"\n");
}

int main()
{
    fin=fopen("restante.in","r");
    fout=fopen("restante.out","w");

    fscanf(fin,"%d\n",&n);
    int h[16];
    for(int i=1; i<=n; i++)
    {
        fgets(cuvinte,16,fin);
        int lung=strlen(cuvinte);
        lung--;
        for(int j=0; j<lung; j++)
        {
            h[j]=cuvinte[j]-'a';
        }
        stable_sort(h,h+lung);
        //afis(h,lung);
        caut_structura(h,lung);
    }
    fprintf(fout,"%d",original);
    return 0;
}