Cod sursa(job #2212827)

Utilizator _Victor_Victor Ciobanu _Victor_ Data 14 iunie 2018 21:37:23
Problema Elimin Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <bits/stdc++.h>

#define NMAX 1001
 
typedef long long ll;
 
using namespace std;
 
ifstream fin("elimin.in");
ofstream fout("elimin.out");
 
long long A[NMAX][NMAX];

bool cmp (int a,int b){
 return a<b;
}
 
 
ll R[NMAX],I[NMAX],C[NMAX],m,n,r,c,s=0;
   
void solve(ll k){
	if (k<=r){
		for(ll i = I[k-1]+1;i<=m;i++){
			I[k]=i;
			solve(k+1);
		}
	}else{
		int sc=0;
		/*for(ll i=1;i<=r;i++){
		 sc+=R[I[i]];
		}*/
		 for(ll i = 1;i<=r;i++)
    	  for(ll j = 1;j<=n;j++){
		   if (i==1) C[j]=0;
		   C[j]+=A[I[i]][j];
		  }
		 sort(C+1,C+1+n,cmp); 
	  	 for(ll i=n;i>c;i--)  
	        sc+=C[i];
		 if(sc>s) s=sc;
	}
}
 
int main(){
    fin>>m>>n>>r>>c; 
    I[0]=0;
	if(m<=n){
		for (ll i = 1;i<=m;i++){
       		for(ll j = 1;j<=n;j++){
       		     fin>>A[i][j];  
       		}
    	}
	}else{
		for (ll i = 1;i<=m;i++){
       		for(ll j = 1;j<=n;j++){
       		     fin>>A[j][i];  
       		}
    	}
    swap(m,n);swap(r,c);
	}	
    r=m-r;
	solve(1);
    fout<<s;
    return 0;
}