RT,样例输出16我输出160,感觉没什么问题。
#include<bits/stdc++.h>
using namespace std;
struct CF176A{
int a,b,c,eman;
};
bool cmp(CF176A l,CF176A z){
return l.b>z.b;
}
bool cmp1(CF176A l,CF176A z){
return l.eman<z.eman;
}
int main(){
CF176A flc[114][514];
int n,m,y,ans=0,cnt=0,sum=0;
cin>>n>>m>>y;
string s;
for(int i=1;i<=n;i++){
cin>>s;
for(int j=1;j<=m;j++){
cin>>flc[i][j].a>>flc[i][j].b>>flc[i][j].c;
flc[i][j].eman=j;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
for(int k=1;k<=m;k++)
flc[j][k].b-=flc[i][k].a;
sort(flc[j]+1,flc[j]+m+1,cmp);
for(int k=1;k<=m;k++){
if(flc[j][k].b<=0)
break;
int q=flc[j][k].eman;
if(i==j) q=k;
if(cnt+flc[i][q].c<y){
cnt+=flc[i][q].c;
sum+=flc[i][q].c*flc[j][k].b;
} else{
sum+=(y-cnt)*flc[j][k].b;
break;
}
}
sort(flc[j]+1,flc[j]+m+1,cmp1);
for(int k=1;k<=m;k++) flc[i][k].b+=flc[i][k].a;
}
}
cout<<sum<<'\n';
return 0;
}