#include<bits/stdc++.h>
using namespace std;
int a[20][30],f[20][30],g[20][30],n,m;
void print(int i,int j){
if(i==0){
return;
}
print(i-1,j-g[i][j]);
cout<<i<<" "<<g[i][j]<<endl;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
f[i][0]=0;
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
for(int k=0;k<=j;k++){
if(f[i-1][j-k]+a[i][k]>=f[i][j]){
f[i][j]=f[i-1][j-k]+a[i][k];
g[i][j]=k;
}
}
}
}
cout<<f[n][m]<<endl;
print(n,m);
return 0;
}
本道题输入每个公司的每台机器的利润之后,分别比较,将机器分给比较之后,利润最大的那个公司,将比较之后最大的数弹出,将弹出的数的下一个数减去它,再进行比较,直到讲所有的机器分配完。