fbpx

Problema #2901 – datapal – Rezolvari PBInfo

de Mihai-Alexandru

În vacanța de iarnă Adelina a decis să renunțe la teme și a ales să citească o parte din cărțile aduse de Moș Crăciun: cele cu teme istorice sau SF. Pe măsură ce citea își nota în caiet datele calendaristice ale acelor evenimente care au impresionat-o. După vacanță îi povestește colegului de bancă despre aceste evenimente și remarcă faptul că unele date calendaristice au o formă specială, de palindrom: citite de la dreapta la stânga reprezintă aceeași dată ca atunci când se citesc obișnuit, de la stânga la dreapta.

Cerința

Pentru cele n date calendaristice din agenda Adelinei numărați și afișați câte date palindromice au fost găsite iar apoi precizați secolele cu cele mai multe date palindromice.

Date de intrare

Fișierul de intrare datapal.in conține următoarele informații :

Exemplu

datapal.in

5
01122110
11111111
19111111
09122190
12111121

datapal.out

4 
12 22

Explicație

Sunt 4 date palindromice: două în secolul 12 și două în secolul 22

#include <bits/stdc++.h>

using namespace std;

ifstream cin("datapal.in");
ofstream cout("datapal.out");

string s;

map<string , int> M;

int main()
{
    int n;
    cin >> n;
    int cnt = 0;
    for(int i = 1 ; i <= n ; ++i)
    {
        cin >> s;
        bool ok = true;
        int x = s.length()-1;
        for(int j = 0 ; j <= x ; ++j)
            if(s[j]!=s[x-j])
                ok=false;
        if(ok)
            cnt++ , M[s.substr(4 , 2)]++;
    }
    cout << cnt << endl;
    int fmax = 0;
    for(auto x:M)
        if(x.second > fmax)
            fmax = x.second;
    for(auto x:M)
    {
        int nr = 0;
        string t = x.first;
        int i = 0;
        while(t[i])
        {
            nr = nr * 10 + t[i]-'0';
            i++;
        }
        if(x.second == fmax)
        cout << nr + 1 << ' ';
    }
    return 0;
}
Comentarii

S-ar putea sa iti placa