Pagini recente » Cod sursa (job #2332378) | Cod sursa (job #1515815) | Cod sursa (job #656) | Cod sursa (job #3229731) | Cod sursa (job #2976339)
#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;
}