开O2 TLE+RE,不开O2 更多TLE。
TLE厌氧代码:
#include <iostream>
using namespace std;
bool a[300005];
int num[300005];
int n;
int main(){
char s;
cin>>n;
for(int i=1;i<=n;i++){
cin>>s;
if(s=='P')a[i]=true;
}
int l=1,p=n;
while(l<p){
while(a[l]==false)l++;
while(a[p]==true)p--;
for(int j=l;j<p;j++){
if(a[j]==true&&a[j+1]==false){
a[j]=false;
a[j+1]=true;
num[j]++;
num[j+1]++;
j++;
}
}
}
for(int k=1;k<=n;k++){
cout<<num[k]<<" ";
}
return 0;
}
可能是循环没有优化好,能给点建议吗?