Advertisement
Guest User

Untitled

a guest
Mar 24th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.31 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <algorithm>
  5. #include <math.h>
  6. #include <set>
  7. using namespace std;
  8. vector<char> pool = { 'C','M','Y' };
  9. bool bad = true, overall_good = false;
  10. bool check(string& vars)
  11. {
  12.     if (vars.length() == 2)
  13.     {
  14.         if (vars[0] == vars[1])
  15.             return true;
  16.     }
  17.     else
  18.     {
  19.         for (int i = 1; i < vars.length() - 1; i++)
  20.         {
  21.             if (vars[i - 1] == vars[i] || vars[i] == vars[i + 1])
  22.                 return true;
  23.         }
  24.     }
  25.     return false;
  26. }
  27. void generate(string& vars, vector<int>& map, int id)
  28. {
  29.     bool skip;
  30.     for (int i = 0; i < 3; i++)
  31.     {
  32.         skip = false;
  33.         if (overall_good)
  34.             break;
  35.         if (id > 0 && map[id - 1] == map[id] - 1 && pool[i] == vars[map[id-1]])
  36.         {
  37.             skip = true;
  38.         }
  39.         else
  40.             vars[map[id]] = pool[i];
  41.         if (id + 1 > map.size() - 1 && !skip)
  42.         {
  43.             bool new_bad = check(vars);
  44.             if (!bad && !new_bad)
  45.             {
  46.                 overall_good = true;
  47.                 break;
  48.             }
  49.             else if (!new_bad) bad = new_bad;
  50.         }
  51.         else if (!skip) generate(vars, map, id + 1);
  52.     }
  53. }
  54. int main()
  55. {
  56.     int n;
  57.     vector<int> var;
  58.     string a;
  59.     cin >> n;
  60.     cin >> a;
  61.     for (int i = 0; i < n; i++)
  62.     {
  63.         if (a[i] == '?')
  64.             var.push_back(i);
  65.     }
  66.     if (var.size() > 0)
  67.         generate(a, var, 0);
  68.     else overall_good = !check(a);
  69.     if (!overall_good)
  70.         cout << "No";
  71.     else cout << "Yes";
  72.     return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement