一大堆的福利之【USACO题库】Calf Flac

题目描述

据说如果你给无限只母牛和无限台巨型便携式电脑(有非常大的键盘),那么母牛们会制造出世上最棒的回文。

你的工作就是去这些牛制造的奇观(最棒的回文)。

在寻找回文时不用理睬那些标点符号、空格(但应该保留下来以便做为答案输出),只用考虑字母'A'-'Z'和'a'-'z'。

要你寻找的最长的回文的文章是一个不超过20,000个字符的字符串。

我们将保证最长的回文不会超过2,000个字符(在除去标点符号、空格之前)。


PROGRAM NAME: calfflac


INPUT FORMAT


一个不超过20,000个字符的文件。


SAMPLE INPUT (file calfflac.in)


Confucius say: Madam, I'm Adam.


OUTPUT FORMAT


输出的第一行应该包括找到的最长的回文的长度。

下一个行或几行应该包括这个回文的原文(没有除去标点符号、空格),

把这个回文输出到一行或多行(如果回文中包括换行符)。

如果有多个回文长度都等于最大值,输出那个前出现的。


SAMPLE OUTPUT (file calfflac.out)


11

Madam, I'm Adam


var
        a,n,s:ansistring;
        l,i,j,t,k,b,e,mx,z:longint;
begin
        readln(a);
        readln(n);
        while n<>'' do
        begin
                a:=a+'*'+n;
                readln(n);
                if n='' then begin a:=a+'*'; readln(n); end;
        end;
        l:=length(a);
        for t:=1 to l-1 do
                for k:=0 to 1 do
                begin

                        i:=t; j:=t+k; z:=k-1;
                        while(i>0)and((upcase(a[i])<'A')or(upcase(a[i])>'Z'))do dec(i);
                        while(j<=l)and((upcase(a[j])<'A')or(upcase(a[j])>'Z'))do inc(j);
                        repeat
                                if upcase(a[i])<>upcase(a[j]) then break;
                                inc(z,2); b:=i; e:=j; dec(i); inc(j);
                                while(i>0)and((upcase(a[i])<'A')or(upcase(a[i])>'Z'))do dec(i);
                                while(j<=l)and((upcase(a[j])<'A')or(upcase(a[j])>'Z'))do inc(j);
                        until(i<1)or(j>l);
                        if mxthen begin mx:=z; s:=copy(a,b,e-b+1); end;
                end;
        writeln(mx);
        for i:=1 to length(s) do
                if s[i]='*' then writeln else write(s[i]);
end.



题目描述

据说如果你给无限只母牛和无限台巨型便携式电脑(有非常大的键盘),那么母牛们会制造出世上最棒的回文。

你的工作就是去这些牛制造的奇观(最棒的回文)。

在寻找回文时不用理睬那些标点符号、空格(但应该保留下来以便做为答案输出),只用考虑字母'A'-'Z'和'a'-'z'。

要你寻找的最长的回文的文章是一个不超过20,000个字符的字符串。

我们将保证最长的回文不会超过2,000个字符(在除去标点符号、空格之前)。


PROGRAM NAME: calfflac


INPUT FORMAT


一个不超过20,000个字符的文件。


SAMPLE INPUT (file calfflac.in)


Confucius say: Madam, I'm Adam.


OUTPUT FORMAT


输出的第一行应该包括找到的最长的回文的长度。

下一个行或几行应该包括这个回文的原文(没有除去标点符号、空格),

把这个回文输出到一行或多行(如果回文中包括换行符)。

如果有多个回文长度都等于最大值,输出那个前出现的。


SAMPLE OUTPUT (file calfflac.out)


11

Madam, I'm Adam

你可能感兴趣的:(给予魔芋(古称蒟蒻)的福利)