#include <iostream>
#include <vector>
namespace {
using std::ios_base, std::cin, std::cout;
using std::vector;
constexpr char P = 'P';
constexpr char L = 'L';
};
int main() {
// Ustawienia strumieni
ios_base::sync_with_stdio(false);
cin.tie(NULL);
// Czytanie danych i obliczanie wyników
size_t n;
char c;
size_t ile_P = 0;
cin >> n;
vector<size_t> cnts(n, 0);
vector<size_t> begs, ends;
for (size_t k = 0; k < n; ++k) {
cin >> c;
if (c == P) {
++ile_P;
} else if (ile_P > 0) { // c == L
++cnts[k];
++cnts[k - ile_P];
if (ile_P > 1) {
begs.push_back(k - ile_P + 1);
ends.push_back(k - 1);
}
}
}
// Osobne uwzględnianie przedziałów += 2 dla poprawy wydajności
size_t factor = 0;
size_t begs_i = 0, ends_i = 0;
for (size_t k = 0; k < n; ++k) {
if (begs_i < begs.size() && begs[begs_i] == k) {
factor += 2;
++begs_i;
}
cnts[k] += factor;
if (ends_i < ends.size() && ends[ends_i] == k) {
factor -= 2;
++ends_i;
}
}
// Prezentacja wyników
for (auto const & c : cnts)
cout << c << ' ';
cout << '\n';
return 0;
}
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | #include <iostream> #include <vector> namespace { using std::ios_base, std::cin, std::cout; using std::vector; constexpr char P = 'P'; constexpr char L = 'L'; }; int main() { // Ustawienia strumieni ios_base::sync_with_stdio(false); cin.tie(NULL); // Czytanie danych i obliczanie wyników size_t n; char c; size_t ile_P = 0; cin >> n; vector<size_t> cnts(n, 0); vector<size_t> begs, ends; for (size_t k = 0; k < n; ++k) { cin >> c; if (c == P) { ++ile_P; } else if (ile_P > 0) { // c == L ++cnts[k]; ++cnts[k - ile_P]; if (ile_P > 1) { begs.push_back(k - ile_P + 1); ends.push_back(k - 1); } } } // Osobne uwzględnianie przedziałów += 2 dla poprawy wydajności size_t factor = 0; size_t begs_i = 0, ends_i = 0; for (size_t k = 0; k < n; ++k) { if (begs_i < begs.size() && begs[begs_i] == k) { factor += 2; ++begs_i; } cnts[k] += factor; if (ends_i < ends.size() && ends[ends_i] == k) { factor -= 2; ++ends_i; } } // Prezentacja wyników for (auto const & c : cnts) cout << c << ' '; cout << '\n'; return 0; } |
English