Advertisement
skimono

Untitled

Sep 24th, 2021
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.63 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <iostream>
  3. #include <vector>
  4. #include <algorithm>
  5. #include <cmath>
  6. #include <stack>
  7. #include <iomanip>
  8. #include <fstream>
  9. #include <string>
  10. #include <set>
  11. #include <deque>
  12. #include <queue>
  13. #include <map>
  14. #include <bitset>
  15. #include <random>
  16.  
  17. using namespace std;
  18.  
  19. typedef long long ll;
  20. typedef unsigned long long ull;
  21. typedef long double ld;
  22. #define endl "\n"
  23. #define sqrt sqrtl
  24.  
  25. #define all(a) a.begin(), a.end();
  26.  
  27. const ll inf = 1e9 + 13;
  28. long double eps = 1e-9;
  29. const ll maxsz = 1e6 + 5;
  30.  
  31. void solve() {
  32.     string s;
  33.     ll i, j;
  34.     cin >> s;
  35.     vector <vector <ll> > a(5 + 1);
  36.     vector <vector <ll> > b(5 + 1);
  37.     ll pos1 = 1, pos2 = 1;
  38.     a[0] = { 0 };
  39.     b[0] = { 0 };
  40.     for (i = 0; i < s.size(); i++) {
  41.         if (i % 2 == 0) {
  42.             char t = s[i];
  43.             vector <ll> now;
  44.             for (j = 0; j < a[pos1 - 1].size(); j++) {
  45.                 if (t == '0') {
  46.                     now.push_back(a[pos1 - 1][j]);
  47.                 }
  48.                 else if (t == '1') {
  49.                     now.push_back(a[pos1 - 1][j] + 1);
  50.                 }
  51.                 else {
  52.                     now.push_back(a[pos1 - 1][j]);
  53.                     now.push_back(a[pos1 - 1][j] + 1);
  54.                 }
  55.             }
  56.             a[pos1] = now;
  57.             pos1++;
  58.         }
  59.         else {
  60.             char t = s[i];
  61.             vector <ll> now;
  62.             for (j = 0; j < b[pos2 - 1].size(); j++) {
  63.                 if (t == '0') {
  64.                     now.push_back(b[pos2 - 1][j]);
  65.                 }
  66.                 else if (t == '1') {
  67.                     now.push_back(b[pos2 - 1][j] + 1);
  68.                 }
  69.                 else {
  70.                     now.push_back(b[pos2 - 1][j]);
  71.                     now.push_back(b[pos2 - 1][j] + 1);
  72.                 }
  73.             }
  74.             b[pos2] = now;
  75.             pos2++;
  76.         }
  77.     }
  78.     vector <ll> s1(5 + 1);
  79.     vector <ll> s2(5 + 1);
  80.     for (i = 1; i <= 5; i++) {
  81.         pair <ll, ll> f = { inf,-inf }, s = { inf, -inf };
  82.         for (j = 0; j < a[i].size(); j++) {
  83.             if (a[i][j] < f.first) {
  84.                 f.first = a[i][j];
  85.             }
  86.             if (a[i][j] > f.second) {
  87.                 f.second = a[i][j];
  88.             }
  89.         }
  90.         for (j = 0; j < b[i].size(); j++) {
  91.             if (b[i][j] < s.first) {
  92.                 s.first = b[i][j];
  93.             }
  94.             if (b[i][j] > s.second) {
  95.                 s.second = b[i][j];
  96.             }
  97.         }
  98.         if (s2[i - 1] > f.first + ((10 - (2 * i)) / 2)) {
  99.             cout << 2 * i - 1 << endl;
  100.             return;
  101.         }
  102.         if (f.second > s1[i - 1] + ((10 - 2 * i) / 2 + 1)) {
  103.             cout << 2 * i - 1 << endl;
  104.             return;
  105.         }
  106.         if (f.second > s.first + (10 - 2 * i) / 2) {
  107.             cout << 2 * i << endl;
  108.             return;
  109.         }
  110.         if (s.second > f.first + ((10 - 2 * i) / 2)) {
  111.             cout << 2 * i << endl;
  112.             return;
  113.         }
  114.         s1[i] = s.first;
  115.         s2[i] = s.second;
  116.     }
  117.     cout << 10 << endl;
  118. }
  119.  
  120. signed main() {
  121. #ifdef _DEBUG
  122.     freopen("input.txt", "r", stdin);
  123.     freopen("output.txt", "w", stdout);
  124. #endif
  125.     ios_base::sync_with_stdio(0);
  126.     cin.tie(NULL);
  127.     cout.tie(NULL);
  128.     ll t;
  129.     cin >> t;
  130.     while (t--) solve();
  131. }
  132.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement