infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Andrei Grigorean din Noiembrie 20, 2011, 21:30:32



Titlul: 1211 PalM
Scris de: Andrei Grigorean din Noiembrie 20, 2011, 21:30:32
Aici puteţi discuta despre problema PalM (http://infoarena.ro/problema/palm).


Titlul: Răspuns: 1211 PalM
Scris de: Parfene Narcis din Noiembrie 21, 2011, 16:57:49
As dori si eu sa stiu urmatorul lucru: daca subsirul este palindrom, deci simetric, asta nu inseamna obligatoriu ca varful muntelui este la mijloc (format din unul sau mai multe elemente egale)? Imi da WA pe multe teste.


Titlul: Răspuns: 1211 PalM
Scris de: Mihai-Alexandru Dusmanu din Noiembrie 21, 2011, 19:41:48
Sunt 3 situatii:

1. are varf ( gen : "abcba")
2. are "platou" (gen : "abccba")
3. este plat ( gen : "aaaaa")

Toate cele de mai sus sunt considerate subsiruri palindromice munte, deci ceea ce ai zis tu este adevarat.


Titlul: Răspuns: 1211 PalM
Scris de: Valentin Harsan din Noiembrie 22, 2011, 11:38:01
Imi puteti da un test mai mare? nu stiu ce e gresit in sursa mea...  :-'

Cod:
#include<fstream>
#include<string.h>
using namespace std;

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

char a[503];
int n,smax=1;

void pal1(int poz) {
    int i,lung=1;

    for(i=poz-1;i!=0 && 2*poz-i<=n;--i)
        if(a[i]==a[2*poz-i] && a[i]<=a[i+1])
            lung+=2;
        else
            break;

    if(lung>smax)
        smax=lung;
}

void pal2(int poz) {
    int i,lung=2;

    if(a[poz]!=a[poz+1])
        return;

    for(i=poz-1;i!=0 && 2*poz-i+1<=n;--i)
        if(a[i]==a[2*poz-i+1] && a[i]<=a[i+1])
            lung+=2;
        else
            break;

    if(lung>smax)
        smax=lung;
}

int main() {
    int i;

    in.getline(a+1,501);

    a[0]=90;

    n=strlen(a);

    if(n!=1 && a[1]==a[2])
        smax=2;

    for(i=2;i!=n;++i) {

        if(i!=1)pal1(i);
        pal2(i);

    }

    out << smax;

    return 0;
}


Titlul: Răspuns: 1211 PalM
Scris de: George Marcus din Noiembrie 22, 2011, 12:47:44
Iti dau un test mic :)
Cod:
aacddeffeca