Cod sursa(job #2209957)

Utilizator _Victor_Victor Ciobanu _Victor_ Data 5 iunie 2018 11:06:30
Problema Elimin Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.68 kb
#include <bits/stdc++.h>
 
using namespace std;
 
ifstream fin("elimin.in");
ofstream fout("elimin.out");
 
int A[900][900],B[900][900];
struct ran{
    int ord,val;
};
 
bool cmp(ran a,ran b){
    return a.val<=b.val;
}
 
ran R[900],C[900],R2[900],C2[900];
 
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<m;i++){
     	for(int j = 0;j<n;j++)
        	cout<<A[i][j]<<' ';
        cout<<'\n';
     }
	    
    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++)
        	cout<<A[i][j]<<' ';
        cout<<'\n';
     }
	 
    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;
}