#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]<<" "; } |
English