Cod sursa(job #2976339)

Utilizator Paul0516Berindeie Paul Paul0516 Data 8 februarie 2023 23:00:48
Problema PalM Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.92 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <queue>
#include <cstring>
#include <vector>
#include <climits>
#include <bitset>
#include <cmath>
#include <climits>
#include <stack>
#include <stdlib.h>
#include <queue>

using namespace std;

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

char s[501];

void ver_imp(int i, int& ind1, int& ind2, int& lungime)
{
    bool ok = 1;
    lungime = 1;
    while (ok == 1)
    {
        if (i - 1 <= 0 || i + 1 > strlen(s))
        {
            ok = 0;
            break;
        }
        if (s[i - lungime] != s[i + lungime] || (s[i - lungime] > s[i - lungime + 1]))
        {
            ok = 0;
            break;
        }
        else
            lungime++;
    }
    lungime--;
    ind1 = i - lungime;
    ind2 = i + lungime;
    lungime = ind2 - ind1 + 1;
}

void ver_par(int i, int& ind3, int& ind4, int& lungime)
{
    bool ok = 1;
    lungime = 1;
    while (ok == 1)
    {
        if (i - 1 <= 0 || i + 1 > strlen(s))
        {
            ok = 0;
            break;
        }
        if (s[i - lungime] != s[i + lungime - 1])
        {
            ok = 0;
            break;
        }
        else
            lungime++;
    }
    ind3 = i - lungime + 1;
    ind4 = i + lungime - 2;
    lungime = ind4 - ind3 + 1;
}


int main()
{
    int ind1, ind2, ind3, ind4, lungime_imp, lungime_par, maxi = -1, afis1, afis2;
    f.getline(s, 501);
    for (int i = 0; i < strlen(s); i++)
    {
        ver_imp(i, ind1, ind2, lungime_imp);
        ver_par(i, ind3, ind4, lungime_par);
        if (lungime_imp > maxi)
        {
            maxi = lungime_imp;
            afis1 = ind1;
            afis2 = ind2;
        }
        if (lungime_par > maxi)
        {
            maxi = lungime_par;
            afis1 = ind3;
            afis2 = ind4;
        }
    }
    g << maxi << "\n";
    return 0;
}