#include<iostream> #include <string> #include <bits/stdc++.h> using namespace std; string seq; constexpr int MAXN = 1e5 + 10; long long int pref[MAXN]; long long int suf[MAXN]; long long int min(long long int a, long long int b){ return a > b ? b : a; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n >> seq; seq = ' ' + seq; for(int i = 1; i <= n; i++){ pref[i] = pref[i-1]; if(seq[i] == 'P'){ pref[i]++; } } for(int i = n; i > 0; i--){ suf[i] = suf[i+1]; if(seq[i] == 'L'){ suf[i]++; } } for(int i = 1; i<=n; i++){ long long int val = 2 * min(pref[i-1], suf[i+1]); if(seq[i] == 'L'){ if(pref[i-1] > suf[i+1]){ val++; } } if(seq[i] == 'P'){ if(suf[i+1] > pref[i-1]){ val++; } } cout << val << ' '; } 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 | #include<iostream> #include <string> #include <bits/stdc++.h> using namespace std; string seq; constexpr int MAXN = 1e5 + 10; long long int pref[MAXN]; long long int suf[MAXN]; long long int min(long long int a, long long int b){ return a > b ? b : a; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n >> seq; seq = ' ' + seq; for(int i = 1; i <= n; i++){ pref[i] = pref[i-1]; if(seq[i] == 'P'){ pref[i]++; } } for(int i = n; i > 0; i--){ suf[i] = suf[i+1]; if(seq[i] == 'L'){ suf[i]++; } } for(int i = 1; i<=n; i++){ long long int val = 2 * min(pref[i-1], suf[i+1]); if(seq[i] == 'L'){ if(pref[i-1] > suf[i+1]){ val++; } } if(seq[i] == 'P'){ if(suf[i+1] > pref[i-1]){ val++; } } cout << val << ' '; } return 0; } |