Advertisement
vlatkovski

Patiki (државен '16) za 13/20 (pagja na vreme)

Mar 21st, 2018
355
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.57 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. int zamena(vector<pair<bool, bool>> &k, int i, bool kondicija) {
  7.     //kondicii: 0=00, 1=11
  8.     bool *a1 = &k[i].first, *a2 = &k[i].second;
  9.     static const int ksz = k.size();
  10.     int num = 0, j = i;
  11.     bool reachedEnd = j + 1 == ksz;
  12.     while (*a1 == kondicija && *a2 == kondicija) {
  13.         bool *b1 = &k[j].first, *b2 = &k[j].second;
  14.         //cout << "b1:" << *b1 << " b2:" << *b2 << endl;
  15.         if (*b1 == !kondicija) {
  16.             *b1 = kondicija;
  17.             *a2 = !kondicija;
  18.             num += (j - i > 0) ? j - i : i - j;
  19.         }
  20.         reachedEnd = j + 1 == ksz;
  21.         if (reachedEnd) {
  22.             if (j == 0) {
  23.                 break;
  24.             } else if (j >= i) {
  25.                 j = i - 1;
  26.             } else {
  27.                 --j;
  28.             }
  29.         } else {
  30.             ++j;
  31.         }
  32.     }
  33.     return num;
  34. }
  35.  
  36. int main() {
  37.     int n, potezi = 0;
  38.     cin >> n;
  39.  
  40.     vector<pair<bool, bool>> k(n);
  41.     for (int i = 0; i < n; ++i) {
  42.         char p1, p2;
  43.         cin >> p1 >> p2;
  44.  
  45.         bool a1 = p1 != 'L', a2 = p2 == 'D';
  46.         if (a1 == 1 && a2 == 0) {
  47.             a1 = 0;
  48.             a2 = 1;
  49.         }
  50.  
  51.         k[i].first = a1;
  52.         k[i].second = a2;
  53.     }
  54.  
  55.     for (int i = 0; i < n; ++i) {
  56.         bool a1 = k[i].first, a2 = k[i].second;
  57.  
  58.         if (a1 == 0 && a2 == 0) {
  59.             potezi += zamena(k, i, 0);
  60.         } else if (a1 == 1 && a2 == 1) {
  61.             potezi += zamena(k, i, 1);
  62.         }
  63.     }
  64.  
  65.     cout << potezi;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement