Advertisement
Guest User

Untitled

a guest
Mar 14th, 2011
583
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. /*
  2. ID: marijus1
  3. PROG: calfflac
  4. LANG: C++
  5. */
  6. #include <string>
  7. #include <fstream>
  8. #include <iostream>
  9. #include <algorithm>
  10. #include <sstream>
  11.  
  12. using namespace std;
  13.  
  14.  
  15. string rev(string s)
  16. {
  17. return string(s.rbegin(), s.rend());
  18. }
  19.  
  20. bool valid(char c)
  21. {
  22. string CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  23.  
  24. return binary_search(CHARS.begin(), CHARS.end(), c);
  25. }
  26.  
  27. string convert(string s)
  28. {
  29. string snew;
  30. int N = s.length();
  31.  
  32. for (int i = 0; i < N; i++){
  33. if (valid(toupper(s[i])))
  34. snew += toupper(s[i]);
  35. }
  36.  
  37. return snew;
  38. }
  39.  
  40. string cleanUp(string s)
  41. {
  42. while ( !valid(toupper(s[0])) )
  43. s.erase(0,1);
  44.  
  45. while ( !valid(toupper(s[s.length()-1])) )
  46. s.erase(s.length()-1,1);
  47. return s;
  48. }
  49.  
  50. int main()
  51. {
  52. ifstream fin ("calfflac.in");
  53. ofstream fout ("calfflac.out");
  54.  
  55. string original((std::istreambuf_iterator<char>(fin)), std::istreambuf_iterator<char>());
  56.  
  57. int len = original.length();
  58. int longest = 0;
  59. string answer;
  60.  
  61. for (int i = 0; i < len-1; i++){
  62.  
  63. int lower(0), upper(0);
  64.  
  65. if (len % 2 == 0){
  66. lower = i;
  67. upper = i+1;
  68. } else {
  69. lower = i;
  70. upper = i;
  71. }
  72.  
  73. while (lower >= 0 && upper <= len){
  74. string s2 = original.substr(lower,upper-lower+1);
  75. string s = convert(s2);
  76.  
  77. if (s[0] == s[s.length()-1]){
  78. lower -= 1;
  79. upper += 1;
  80. } else {
  81. if (s.length() > longest){
  82. longest = s.length();
  83. answer = s2;
  84. }
  85. break;
  86. }
  87.  
  88.  
  89. }
  90. }
  91.  
  92. fout << longest << endl;
  93. fout << cleanUp(answer) << endl;
  94.  
  95. return 0;
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement