Cod sursa(job #2079591)

Utilizator dragos.galeteanu2001Dragos Iulian dragos.galeteanu2001 Data 1 decembrie 2017 16:17:55
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.48 kb
#include <fstream>
#include <cstring>

using namespace std;

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

int main()
{
    char S[205][5005];
    int n, i, j, jj, p, mx;
    f >> p >> n;

    if (p == 1) {
        f >> S[0];
        mx = strlen(S[0]);
        jj = 0;
        for (i = 1; i < n; i++) {
            f >> S[i];
            if (strlen(S[i]) > mx) {
                mx = strlen(S[i]);
                jj = i;
            }
            else if (strlen(S[i]) == mx && strcmp(S[i], S[jj]) < 0) { jj = i; }
        }
        g << S[jj];
    }
    else {
        int lg[5000], nr=0, poz, m, mx;
        bool da[200];
        f >> S[0];
        lg[0]=strlen(S[0]); mx=lg[0];
        for (i = 1; i < n; i++) { f >> S[i];
             lg[i]=strlen(S[i]);
             if (lg[i]>mx) mx=lg[i];
        }
        for (i=0; i<n; i++) {
            da[i]=1;
            if (lg[i]==mx) { nr++; continue; }
            for (j=0; j<n && da[i]; j++)
                if (lg[i]<lg[j]) {
                    poz=0;
                    for (m=0; m<lg[j]; m++) {
                        if (poz<lg[i] && S[j][m]==S[i][poz])
                            poz++;
                        if (poz==lg[i])
                            da[i]=0;
                    }
                }
            if (da[i]) nr++;
        }
        g<<nr<<'\n';
        for (i=0; i<n; i++)
            if (da[i]) g<<S[i]<<'\n';
    f.close();
    g.close();
    return 0;
    }
}