Cod sursa(job #2209892)

Utilizator _Victor_Victor Ciobanu _Victor_ Data 4 iunie 2018 23:33:31
Problema Elimin Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 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<c;i++)
		for(int j = 0;j<m;j++)
			C[j].val+=A[i][j];
	sort(C,C+n,cmp);
	
	for(int j = 0;j<c;j++)
	 for(int i = 0;i<n;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];
	 }
	fout<<max(s,s2);
	return 0;
}