#include <iostream> #include <vector> using namespace std; int main() { int n,i,l,p; char kierunek; bool side=true; cin>>n; vector<bool> tab(n); vector<long long> wynik(n,0); for (i=0;i<n;i++) { cin>>kierunek; if (kierunek=='P') tab[i]=true; else tab[i]=false; } i=0; while (!tab[i]&&i<n) i++; l=i; i=n-1; while (tab[i]&&i>=0) i--; p=i; i=l; while (l<p) { if (tab[i]==side) { if (side) i++; else i--; } else { wynik[i]++; tab[i]=!tab[i]; if (side) { tab[i-1]=!tab[i-1]; wynik[i-1]++; if (i==p) { p--; i=p; } else if (i-1==l) { l++; i=l; } else i-=2; } else { tab[i+1]=!tab[i+1]; wynik[i+1]++; if (i==l) { l++; i=l; } else if (i+1==p) { p--; i=p; } else i+=2; } side=!side; } if (i==l&&l+1!=p) side=true; else if (i==p&&l+1!=p) side=false; } for (i=0;i<n;i++) cout<<wynik[i]<<" "; }
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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | #include <iostream> #include <vector> using namespace std; int main() { int n,i,l,p; char kierunek; bool side=true; cin>>n; vector<bool> tab(n); vector<long long> wynik(n,0); for (i=0;i<n;i++) { cin>>kierunek; if (kierunek=='P') tab[i]=true; else tab[i]=false; } i=0; while (!tab[i]&&i<n) i++; l=i; i=n-1; while (tab[i]&&i>=0) i--; p=i; i=l; while (l<p) { if (tab[i]==side) { if (side) i++; else i--; } else { wynik[i]++; tab[i]=!tab[i]; if (side) { tab[i-1]=!tab[i-1]; wynik[i-1]++; if (i==p) { p--; i=p; } else if (i-1==l) { l++; i=l; } else i-=2; } else { tab[i+1]=!tab[i+1]; wynik[i+1]++; if (i==l) { l++; i=l; } else if (i+1==p) { p--; i=p; } else i+=2; } side=!side; } if (i==l&&l+1!=p) side=true; else if (i==p&&l+1!=p) side=false; } for (i=0;i<n;i++) cout<<wynik[i]<<" "; } |