Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ID: marijus1
- PROG: calfflac
- LANG: C++
- */
- #include <string>
- #include <fstream>
- #include <iostream>
- #include <algorithm>
- #include <sstream>
- using namespace std;
- string rev(string s)
- {
- return string(s.rbegin(), s.rend());
- }
- bool valid(char c)
- {
- string CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
- return binary_search(CHARS.begin(), CHARS.end(), c);
- }
- string convert(string s)
- {
- string snew;
- int N = s.length();
- for (int i = 0; i < N; i++){
- if (valid(toupper(s[i])))
- snew += toupper(s[i]);
- }
- return snew;
- }
- string cleanUp(string s)
- {
- while ( !valid(toupper(s[0])) )
- s.erase(0,1);
- while ( !valid(toupper(s[s.length()-1])) )
- s.erase(s.length()-1,1);
- return s;
- }
- int main()
- {
- ifstream fin ("calfflac.in");
- ofstream fout ("calfflac.out");
- string original((std::istreambuf_iterator<char>(fin)), std::istreambuf_iterator<char>());
- int len = original.length();
- int longest = 0;
- string answer;
- for (int i = 0; i < len-1; i++){
- int lower(0), upper(0);
- if (len % 2 == 0){
- lower = i;
- upper = i+1;
- } else {
- lower = i;
- upper = i;
- }
- while (lower >= 0 && upper <= len){
- string s2 = original.substr(lower,upper-lower+1);
- string s = convert(s2);
- if (s[0] == s[s.length()-1]){
- lower -= 1;
- upper += 1;
- } else {
- if (s.length() > longest){
- longest = s.length();
- answer = s2;
- }
- break;
- }
- }
- }
- fout << longest << endl;
- fout << cleanUp(answer) << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement