Cod sursa(job #2962144)

Utilizator indmium_Voicu Buhai Imperiu indmium_ Data 7 ianuarie 2023 20:43:22
Problema A+B Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 3.18 kb
#include <iostream>
#include <fstream>

using namespace std;

int num[10];
int frecv[1000];
int main()
{
    int i, n, c, nrmin, nrmax, x, j, x_aux, cf, nr, len_num, nrapmin, nrapmax, x1min, x1max, x2min, x2max, aparitii_max;
    ifstream fin;
    fin.open("3cifre.in");
    ofstream fout;
    fout.open("3cifre.out");
    fin >> n;
    fin >> c;
    switch(c)
    {
    case 1:
        nrmin = 1000;
        nrmax = -1;
        for(i = 0; i < n; i++)
        {
            num[0] = 0; num[1] = 0;num[2] = 0;num[3] = 0;num[4] = 0;num[5] = 0;num[6] = 0;num[7] = 0;num[8] = 0;num[9] = 0;
            fin >> x;
            x_aux = x;
            j = 0;
            while(x > 0)
            {
                cf = x % 10;
                x /= 10;
                num[j] = cf;
                j++;
            }
            len_num = j;
            for(j = len_num - 1; j >= 2; j--)
            {
                if(num[j] != 0)
                {
                    nr = num[j] * 100 + num[j - 1] * 10 + num[j - 2];
                    if(nr > nrmax)
                    {
                        nrmax = nr;
                        nrapmax = 1;
                        x2min = x_aux;
                        x2max = x_aux;
                    }else if(nr == nrmax)
                    {
                        nrapmax++;
                        x2max = x_aux;
                    }
                    if(nr < nrmin)
                    {
                        nrmin = nr;
                        nrapmin = 1;
                        x1min = x_aux;
                        x1max = x_aux;
                    }else if(nr == nrmin)
                    {
                        nrapmin++;
                        x1max = x_aux;
                    }
                }

            }
        }
        fout << nrmin << " " << nrapmin << " " << x1min << " " << x1max << endl;
        fout << nrmax << " " << nrapmax << " " << x2min << " " << x2max << endl;
        break;
    case 2:
        for(i = 0; i < n; i++)
        {
            num[0] = 0; num[1] = 0;num[2] = 0;num[3] = 0;num[4] = 0;num[5] = 0;num[6] = 0;num[7] = 0;num[8] = 0;num[9] = 0;
            fin >> x;
            x_aux = x;
            j = 0;
            while(x > 0)
            {
                cf = x % 10;
                x /= 10;
                num[j] = cf;
                j++;
            }
            len_num = j;
            for(j = len_num - 1; j >= 2; j--)
            {
                if(num[j] != 0)
                {
                    nr = num[j] * 100 + num[j - 1] * 10 + num[j - 2];
                    frecv[nr]++;
                }

            }
        }

        aparitii_max = -1;
        for(i = 100; i <= 999; i++)
        {
            if(frecv[i] > aparitii_max)
            {
                aparitii_max = frecv[i];
            }
        }

        fout << aparitii_max << endl;
        for(i = 100; i < 999; i++)
        {
            if (frecv[i] == aparitii_max)
            {
                fout << i << " ";
            }
        }
        break;
    default:
        break;
    }

    fin.close();
    fout.close();
    return 0;
}