Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- int zamena(vector<pair<bool, bool>> &k, int i, bool kondicija) {
- //kondicii: 0=00, 1=11
- bool *a1 = &k[i].first, *a2 = &k[i].second;
- static const int ksz = k.size();
- int num = 0, j = i;
- bool reachedEnd = j + 1 == ksz;
- while (*a1 == kondicija && *a2 == kondicija) {
- bool *b1 = &k[j].first, *b2 = &k[j].second;
- //cout << "b1:" << *b1 << " b2:" << *b2 << endl;
- if (*b1 == !kondicija) {
- *b1 = kondicija;
- *a2 = !kondicija;
- num += (j - i > 0) ? j - i : i - j;
- }
- reachedEnd = j + 1 == ksz;
- if (reachedEnd) {
- if (j == 0) {
- break;
- } else if (j >= i) {
- j = i - 1;
- } else {
- --j;
- }
- } else {
- ++j;
- }
- }
- return num;
- }
- int main() {
- int n, potezi = 0;
- cin >> n;
- vector<pair<bool, bool>> k(n);
- for (int i = 0; i < n; ++i) {
- char p1, p2;
- cin >> p1 >> p2;
- bool a1 = p1 != 'L', a2 = p2 == 'D';
- if (a1 == 1 && a2 == 0) {
- a1 = 0;
- a2 = 1;
- }
- k[i].first = a1;
- k[i].second = a2;
- }
- for (int i = 0; i < n; ++i) {
- bool a1 = k[i].first, a2 = k[i].second;
- if (a1 == 0 && a2 == 0) {
- potezi += zamena(k, i, 0);
- } else if (a1 == 1 && a2 == 1) {
- potezi += zamena(k, i, 1);
- }
- }
- cout << potezi;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement