#include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; vector<char> mrowki(n); for (int i = 0; i < n; ++i) cin >> mrowki[i]; vector<int> prawych_na_lewo(n, 0); int aktualnie = 0; for (int i = 0; i < n; ++i) { prawych_na_lewo[i] = aktualnie; if (mrowki[i] == 'P') ++aktualnie; } vector<int> lewych_na_prawo(n, 0); aktualnie = 0; for (int i = n - 1; i >= 0; --i) { lewych_na_prawo[i] = aktualnie; if (mrowki[i] == 'L') ++aktualnie; } vector<int> ans(n, 0); for (int i = 0; i < n; ++i) { ans[i] += 2 * min(prawych_na_lewo[i], lewych_na_prawo[i]); if ((prawych_na_lewo[i] < lewych_na_prawo[i] && mrowki[i] == 'P') || (prawych_na_lewo[i] > lewych_na_prawo[i] && mrowki[i] == 'L')) ++ans[i]; } for (auto x : ans) cout << x << " "; cout << endl; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; vector<char> mrowki(n); for (int i = 0; i < n; ++i) cin >> mrowki[i]; vector<int> prawych_na_lewo(n, 0); int aktualnie = 0; for (int i = 0; i < n; ++i) { prawych_na_lewo[i] = aktualnie; if (mrowki[i] == 'P') ++aktualnie; } vector<int> lewych_na_prawo(n, 0); aktualnie = 0; for (int i = n - 1; i >= 0; --i) { lewych_na_prawo[i] = aktualnie; if (mrowki[i] == 'L') ++aktualnie; } vector<int> ans(n, 0); for (int i = 0; i < n; ++i) { ans[i] += 2 * min(prawych_na_lewo[i], lewych_na_prawo[i]); if ((prawych_na_lewo[i] < lewych_na_prawo[i] && mrowki[i] == 'P') || (prawych_na_lewo[i] > lewych_na_prawo[i] && mrowki[i] == 'L')) ++ans[i]; } for (auto x : ans) cout << x << " "; cout << endl; } |