#include <iostream> bool direction[300000]; int lewa[300000], prawa[300000]; int n; int main() { std::ios_base::sync_with_stdio(0); std::cin.tie(0); std::cin >> n; char znak; for (int i = 0; i < n; i++) { std::cin >> znak; if (znak == 'P') direction[i] = true; } for (int i = 1; i < n; i++) { lewa[i] = lewa[i - 1]; if (direction[i - 1]) lewa[i]++; prawa[n - i - 1] = prawa[n - i]; if (!direction[n - i]) prawa[n - i - 1]++; } int a, b; for (int i = 0; i < n; i++) { a = lewa[i] * 2; b = prawa[i] * 2; if (direction[i]) a++; else b++; std::cout << std::min(a, b) << ' '; } }
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 34 35 36 37 38 39 40 | #include <iostream> bool direction[300000]; int lewa[300000], prawa[300000]; int n; int main() { std::ios_base::sync_with_stdio(0); std::cin.tie(0); std::cin >> n; char znak; for (int i = 0; i < n; i++) { std::cin >> znak; if (znak == 'P') direction[i] = true; } for (int i = 1; i < n; i++) { lewa[i] = lewa[i - 1]; if (direction[i - 1]) lewa[i]++; prawa[n - i - 1] = prawa[n - i]; if (!direction[n - i]) prawa[n - i - 1]++; } int a, b; for (int i = 0; i < n; i++) { a = lewa[i] * 2; b = prawa[i] * 2; if (direction[i]) a++; else b++; std::cout << std::min(a, b) << ' '; } } |