⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usaco_calfflac.cpp

📁 usaco自己做的1到5章的代码
💻 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 + -