Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
48180 | wsad | 【AB-1】比赛 | C++ | 通过 | 100 | 0 MS | 252 KB | 1018 | 2022-04-10 13:55:37 |
#include <bits/stdc++.h> using namespace std; int g[300],a[300]; struct stu{ int num,bo; }r[300]; int main() { // freopen("race.in","r",stdin); // freopen("race.out","w",stdout); int n,T,cntg=0,Maxg=0,Maxr=0; string str; cin>>n>>T>>str; for(int i=0;i<n;++i) { if(str[i]=='R') r[i].num=1; if(str[i]=='G') g[i]=1,++cntg,Maxg=max(Maxg,i); } int cntr=n-cntg; for(int j=1;j<=T;++j) { int k=0; for(int i=Maxg;k<cntg;--i) if(g[i]) g[i]=0,g[i+1]=1,++k; ++Maxg; k=0,Maxr=0; for(int i=0,s;k<cntr;++i) { if(r[i].num) { k+=r[i].num,s=i+3; while(g[s]) --s; a[s]+=r[i].num; r[i].num=0; Maxr=max(Maxr,s); } } k=0; for(int i=Maxr;k<cntr;--i) if(a[i]) k+=a[i],r[i].num=a[i],a[i]=0; k=0; for(int i=0;k<n;++i) { if(g[i]) cout<<'G',++k; if(r[i].num) { cout<<'R',k+=r[i].num; if(r[i].num>1) cout<<'('<<r[i].num<<')'; } } cout<<'\n'; } return 0; }