Mai intai trebuie sa te autentifici.
Cod sursa(job #2209933)
Utilizator | Data | 5 iunie 2018 01:03:14 | |
---|---|---|---|
Problema | Elimin | Scor | 40 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.45 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("elimin.in");
ofstream fout("elimin.out");
int A[1000][1000],B[1000][1000];
struct ran{
int ord,val;
};
bool cmp(ran a,ran b){
return a.val<b.val;
}
ran R[1000],C[1000],R2[1000],C2[1000];
int main(){
int m,n,r,c;
long long s=0,s2=0;
fin>>m>>n>>r>>c;
for (int i = 0;i<m;i++){
R[i].ord = R2[i].ord = i;
for(int j = 0;j<n;j++){
fin>>A[i][j];
B[i][j]=A[i][j];
if(!i) C[j].ord = C2[j].ord = j;
C2[j].val+=A[i][j];
R[i].val+=A[i][j];
}
}
sort(R,R+m,cmp);
sort(C2,C2+n,cmp);
for(int j = 0;j<c;j++)
for(int i = 0;i<m;i++)
B[i][C2[j].ord]=0;
for(int j = 0;j<r;j++)
for(int i = 0;i<n;i++)
A[R[j].ord][i]=0;
for(int i = 0;i<r;i++)
for(int j = 0;j<n;j++)
R2[i].val+=B[i][j];
sort(R2,R2+m,cmp);
for(int i = 0;i<m;i++)
for(int j = 0;j<n;j++)
C[j].val+=A[i][j];
sort(C,C+n,cmp);
for(int j = 0;j<c;j++)
for(int i = 0;i<m;i++)
A[i][C[j].ord]=0;
for(int j = 0;j<r;j++)
for(int i = 0;i<n;i++)
B[R2[j].ord][i]=0;
for(int i = 0;i<m;i++)
for(int j = 0;j<n;j++){
s+=A[i][j];
s2+=B[i][j];
}
// cout<<s<<' '<<s2;
fout<<max(s,s2);
return 0;
}