/* ID: jack5251 PROG: calfflac LANG: C++ */ #include #include #include #include #include #include #include using namespace std; bool paltest(string Test) { size_t pos; while( (pos = Test.find_first_of("`~!@#$%^&*()-_=+{}|[]\\:;\"\'<>,.?/\t\r\n")) != string::npos) Test.erase(pos, 1); while( (pos = Test.find(" ")) != string::npos) Test.erase(pos, 1); while( (pos = Test.find_first_of("ABCDEFGHIJKLMNOPQRSTUVWXYZ")) != string::npos) Test[pos] = tolower(Test[pos]); bool check = false; string temp = ""; for(int x=Test.length() - 1; x>=0; x--) { temp += Test.at(x); } if(Test == temp) check = true; if(check) return true; else return false; } int main() { ifstream fin("calfflac.in"); ofstream fout("calfflac.out"); string start = ""; while(!fin.eof()) { string str; getline(fin, str); start += str; } string longest = ""; for (int x=0; x < start.length(); x++) { for (int y=start.length()-1; y > x + longest.length(); y--) { if (tolower(start.at(x)) == tolower(start.at(y))) { if (paltest(start.substr(x, y))) { longest = start.substr(x, y); y=0; } } } } fout << longest.length() << endl << longest << endl; return 0; }