Cod sursa(job #1840487)

Utilizator wilson182Alexandrina Panfil wilson182 Data 4 ianuarie 2017 14:50:59
Problema Elimin Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<bits/stdc++.h>
using namespace std;
int c[7500], r[7500];
int a[7500][20], sum;
int n, m, R, C, rs[7500], sumax=0;
ifstream f("elimin.in");
ofstream g("elimin.out");
void back(int l, int u){
	int i, j;
	if (l==C+1){
		sum=0;
		for(i=1; i<=n; i++){
			r[i]=c[i];
			for(j=1; j<l; j++) {
				r[i]-=a[i][rs[j]];
			}	
		}
		sort(r+1, r+1+n);
		for(i=R+1; i<=n; i++) sum+=r[i];
		sumax=max(sumax, sum);
	} else for(i=u+1; i<=m; i++)
	{
	rs[l]=i;
	back(l+1, i);
	}
}
int main(){
	f>>n>>m>>R>>C;
	if (m<=n){
		for(int i=1; i<=n; i++)
			for(int j=1; j<=m; j++) {
				f>>a[i][j];
				sum+=a[i][j];
			}
		
	} else {
		for(int i=1; i<=n; i++)
			for(int j=1; j<=m; j++) {
				f>>a[j][i];
				sum+=a[j][i];
			}
		swap(n, m);
		swap(R, C);
	}		
	for(int i=1; i<=n; i++)
			for(int j=1; j<=m; j++) c[i]+=a[i][j];
	back(1, 0);
	g<<sumax;
	return 0;
}