Advertisement
Josif_tepe

Untitled

Mar 18th, 2022
1,042
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.07 KB | None | 0 0
  1. #include <iostream>
  2. #include <queue>
  3. #include <algorithm>
  4. #include <vector>
  5. #include <algorithm>
  6. #include <set>
  7. #include <cstring>
  8.  
  9. using namespace std;
  10. char s[10005];
  11. int main() {
  12.     ios_base::sync_with_stdio(false);
  13.     int a, b, c;
  14.     cin >> a >> b >> c;
  15.     int x = a+b+c;
  16.     vector<int> v;
  17.     v.push_back(0);
  18. //    for(int i = 1; i <= x; i++) {
  19. //        s[i] = ' ';
  20. //    }
  21.     for (int i = 0; i < a; i++) {
  22.         int k;
  23.         cin >> k;
  24.         v.push_back(k);
  25.         s[k] = 'A';
  26.     }
  27. //    for (int i = 1; i < x+1; i++) {
  28. //        cout << s[i];
  29. //    }
  30.     v.push_back(a + b + c + 1);
  31.     int max = -1;
  32.     for (int i = 0; i < v.size(); i++) {
  33.         int tmpb = b;
  34.         int tmpc = c;
  35.         bool ok = true;
  36.         int cnt = 0;
  37.         for (int j = 1; j < v.size(); j++) {
  38.             if (cnt < i) {
  39.                 cnt++;
  40.                 int range = (v[j] - v[j - 1]) - 1;
  41.                 if (range % 2 == 0) {
  42.                     if (tmpb >= range / 2 && tmpc >= range / 2) {
  43.                         tmpb -= range / 2;
  44.                         tmpc -= range / 2;
  45.                     } else {
  46.                         ok = false;
  47.                         break;
  48.                     }
  49.                 }
  50.                 if (range % 2 == 1) {
  51.                     if (tmpb >= range / 2 + 1 && tmpc >= range / 2) {
  52.                         tmpb -= range / 2 + 1;
  53.                         tmpc -= range / 2;
  54.                     } else {
  55.                         ok = false;
  56.                         break;
  57.                     }
  58.                 }
  59.             } else {
  60.                 int range = (v[j] - v[j - 1]) - 1;
  61.                 if (range % 2 == 0) {
  62.                     if (tmpb >= range / 2 && tmpc >= range / 2) {
  63.                         tmpb -= range / 2;
  64.                         tmpc -= range / 2;
  65.                     } else {
  66.                         ok = false;
  67.                         break;
  68.                     }
  69.                 }
  70.                 if (range % 2 == 1) {
  71.                     if (tmpb >= tmpc && tmpb >= range / 2 + 1 && tmpc >= range / 2) {
  72.                         tmpb -= range / 2 + 1;
  73.                         tmpc -= range / 2;
  74.                     } else if (tmpc >= range / 2 + 1 && tmpb >= range / 2) {
  75.                         tmpb -= range / 2;
  76.                         tmpc -= range / 2 + 1;
  77.                     } else {
  78.                         ok = false;
  79.                         break;
  80.                     }
  81.                 }
  82.             }
  83.         }
  84.         if (ok) {
  85.             max = i;
  86.         }
  87.     }
  88.     bool daliB = false;
  89.     int cc = 0;
  90.     for (int i = 1; i < v.size(); i++) {
  91.         if (cc <= max) {
  92.             cc++;
  93.             daliB = true;
  94.             for (int j = v[i - 1] + 1; j < v[i]; j++) {
  95.                 if (daliB) {
  96.                     s[j] = 'B';
  97.                     daliB = false;
  98.                     b--;
  99.                 } else if (!daliB) {
  100.                     s[j] = 'C';
  101.                     daliB = true;
  102.                     c--;
  103.                 }
  104.             }
  105.         } else {
  106.             int range = (v[i] - v[i - 1]) - 1;
  107.             if (range % 2 == 0) {
  108.                 daliB = true;
  109.                 for (int j = v[i - 1] + 1; j < v[i]; j++) {
  110.                     if (daliB) {
  111.                         s[j] = 'B';
  112.                         daliB = false;
  113.                         b--;
  114.                     } else if (!daliB) {
  115.                         s[j] = 'C';
  116.                         daliB = true;
  117.                         c--;
  118.                     }
  119.                 }
  120.             } else {
  121.                 if (b >= c) {
  122.                     daliB = true;
  123.                     for (int j = v[i - 1] + 1; j < v[i]; j++) {
  124.                         if (daliB) {
  125.                             s[j] = 'B';
  126.                             daliB = false;
  127.                             b--;
  128.                         } else if (!daliB) {
  129.                             s[j] = 'C';
  130.                             daliB = true;
  131.                             c--;
  132.                         }
  133.                     }
  134.                 } else {
  135.                     daliB = false;
  136.                     for (int j = v[i - 1] + 1; j < v[i]; j++) {
  137.                         if (daliB) {
  138.                             s[j] = 'B';
  139.                             daliB = false;
  140.                             b--;
  141.                         } else if (!daliB) {
  142.                             s[j] = 'C';
  143.                             daliB = true;
  144.                             c--;
  145.                         }
  146.                     }
  147.                 }
  148.             }
  149.         }
  150.     }
  151.     if(max == -1){
  152.         cout << -1;
  153.     }
  154.     else{
  155.         for (int i = 1; i < x+1; i++) {
  156.             cout << s[i];
  157.         }
  158.     }
  159. }
  160. //1viot for loop - Kolku od prvite rangeovi sakame da ni zapocnat so B
  161. //2riot for loop = Dali da mozeme da gi stavime i rangevi so B
  162. // i= 0  -- >  sakam 0 rangeovi da ni pocne so b;
  163. // j=1  -- >   2 - 0  -- CBC
  164. // BCABCBACBCACBCACBCABCBACBCABCABCA
  165. // BCABCBABCBABCBACBCACBCACBCABCABCAProgram
  166.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement