- #include
- #include
- #includeusing namespace std;
- intx,y,z,r,ans=-0x7fffffff;
- char c;
- intw[11],p[11];
- boolv[11];
- voiddfs(intnow,inttot,intpride,inttime)//now到底几个学生,tot教了几个学生,pride当前声望,time还剩时间
- {
- if(tot>=z) ans=max(ans,pride);
- if(tot==x)return;
- if(now==x)return;
- for(inti=now+1;i<=x;i++)
- {
- if(time>=p[i]&&!v[i])
- {
- dfs(i,tot+1,pride+w[i],time-p[i]);
- v[i]=false;
- }
- }
- }
- int main()
- {
- scanf("%d%d%d",&x,&z,&y);
- for(inti=1;i<=x;i++)
- {
- cin>>c>>r;
- if(c=='G') w[i]=3;
- else if(c=='M') w[i]=2;
- elsew[i]=-2;
- p[i]=r;
- }
- dfs(0,0,0,y);
- if(ans==-0x7fffffff) printf("-1");
- elseprintf("%d",ans);
- }
来源: