📄 usaco_calfflac.cpp
字号:
/*
ID:wangyuc2
PROG:calfflac
LANG:C++
*/
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("calfflac.in");
ofstream fout("calfflac.out");
int checked(char ch)
{
if(ch<='Z' && ch>='A') return 1;
if(ch<='z' && ch>='a') return 2;
return 0;
}
int main()
{
char text[50002];
char ch;
int pl[50001][3];
int pll[50001][3];
char s[200];
int i,j,k,count;
int l,ll,max[2];
i=0;
for(i=0;i<5001;i++) pl[i][0]=1;
while(!fin.eof())
{
fin.getline(s,sizeof(s));
strcat(text,s);
l=strlen(text);
text[l]='\n';
text[l+1]='\0';
}
text[l]='\0';
// // cout<<text<<endl;
int left,right;
for(i=0;i<l;i++)
{
if(checked(text[i]))
{
left=1;
right=1;
while(1)
{
while(i-left>=0 && !checked(text[i-left])) left++;
while(i+right<l && !checked(text[i+right])) right++;
if(i-left>=0 && i+right<l &&(i-left!=i+right) && tolower(text[i-left])==tolower(text[i+right]))
{
pl[i][0]+=2;
pl[i][1]=left;
pl[i][2]=right;
left++;
right++;
}
else break;
}
if(pl[i][0]>max[0]) {max[0]=pl[i][0];max[1]=i;}
left=1;right=1;
while(i+right<l && !checked(text[i+right])) right++;
if(tolower(text[i])==tolower(text[i+right]))
{
right++;
pll[i][0]=2;
while(1)
{
while(i-left>=0 && !checked(text[i-left])) left++;
while(i+right<l && !checked(text[i+right])) right++;
if(i-left>=0 && i+right<l &&(i-left!=i+right) && tolower(text[i-left])==tolower(text[i+right]))
{
pll[i][0]+=2;
pll[i][1]=left;
pll[i][2]=right;
left++;
right++;
}
else break;
}
}
if(pll[i][0]>max[0]) {max[0]=pll[i][0];max[1]=i;}
}
}
fout<<max[0]<<endl;
if(pl[max[1]][0]>pll[max[1]][0]) for(i=max[1]-pl[max[1]][1];i<=max[1]+pl[max[1]][2];i++) fout<<text[i];
else for(i=max[1]-pll[max[1]][1];i<=max[1]+pll[max[1]][2];i++) fout<<text[i];
fout<<endl;
fin.close();
fout.close();
// system("PAUSE");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -