Advertisement
Guest User

Untitled

a guest
Nov 29th, 2015
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.21 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. int main() {
  7.     int n;
  8.     cin >> n;
  9.     string s;
  10.     vector<int> idx;
  11.     cin >> s;
  12.     if (n == 1) {
  13.         cout << 1 << endl;
  14.         return 0;
  15.     }
  16.     int len = 1, maxlen = 0;
  17.     bool change = false;
  18.     for(int i=1;i<n;i++) {
  19.         if (s[i] == s[i-1]) {
  20.             len++;
  21.             if(len>maxlen) maxlen = len;
  22.             if (len == 2) {
  23.                 idx.push_back(i);
  24.             }
  25.         } else {
  26.             change = true;
  27.             len = 1;
  28.         }
  29.     }
  30.     if(idx.size() >= 2)
  31.         for(int i=idx[0];i<idx[1];i++)
  32.             s[i] = 1 - (s[i] - '0') + '0';
  33.     else if(idx.size() == 1)
  34.         if (maxlen == 2)
  35.             for(int i=idx[0];i<n;i++)
  36.                 s[i] = 1 - (s[i] - '0') + '0';
  37.         else
  38.             s[idx[0]] = 1 - (s[idx[0]] - '0') + '0';
  39.     else if (!change) {
  40.         s[1] = 1 - (s[1] - '0') + '0';
  41.     }
  42.     else
  43.         for(int i=0;i<n;i++)
  44.             s[i] = 1 - (s[i] - '0') + '0';
  45. //    cout << s << endl;
  46.     int ans = 1;
  47.     for(int i=1;i<n;i++) {
  48.         if (s[i] != s[i-1]) {
  49.             ans++;
  50.         }
  51.     }
  52.     cout << ans << endl;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement