#include <bits/stdc++.h>
using namespace std;
const int maxn=15;
int mp[maxn][maxn];
int n,m,k;
int ans;
int h[maxn],l[maxn];
vector<int> q;
bool cmp(int a,int b){
return a>b;
}
int main(){
while(cin>>n>>m>>k){
int ans=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>mp[i][j];
}
}
memset(h,0,sizeof(h));
memset(l,0,sizeof(l));
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
h[i]+=mp[i][j];
}
q.push_back(h[i]);
}
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
l[i]+=mp[j][i];
}
q.push_back(l[i]);
}
if(k>=n || k>=m){
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
ans+=mp[i][j];
}
}
cout<<ans<<endl;
continue;
}
//0~n-1 行,n~m-1列
while(k--){
int maxi=0,maxx=0;
for(int i=0;i<q.size();i++){
if(q[i]>maxx){ maxi=i;
maxx=q[i];
}
}
ans+=maxx; q[maxi]=0;
if(maxi>n-1){
for(int i=0;i<n;i++){
q[i]-=mp[i][maxi-n];
}
}
if(maxi<=n-1){
for(int i=n;i<q.size();i++){
q[i]-=mp[maxi][i-n];
}
}
}
cout<<ans<<endl;
}
return 0;
}
不知道为什么只过了95%数据,感觉应该是可以的,求大佬们帮忙查查错
全部评论
(3) 回帖