Cod sursa(job #1067740)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 27 decembrie 2013 14:32:20
Problema Elimin Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<cstring>
#include<fstream>
#include<algorithm>
#define ma 22
#define na 7200

using namespace std;


ifstream f("elimin.in");
ofstream g("elimin.out");
int st[21], a[na][ma], n, m, r, c;
int viz[ma], sum[ma],solutie;
void back(int k){

	if (k == c + 1){

		int sum[na];

		memset(sum, 0, sizeof(sum));

		for (int i = 1; i <= m; ++i){

			if (viz[i] ==0)
				for (int j = 1; j <= n; ++j)
					sum[i] += a[j][i];

		}

		nth_element(sum + 1, sum + 1 + n, sum + 1 + r);
		int trysol = 0;
		for (int i = r + 1; i <= n; ++i){

			trysol += sum[i];
		}
		if (trysol > solutie){
			solutie = trysol;

		}
		return;
	}
	for (int i = 1; i <= m; ++i){

		viz[i] = 1;
		st[k] = i;
		back(k + 1);
		viz[i] = 0;

	}
}
int main() {

	f >> n >> m >> r >> c;


	if(n>m){
		
		for (int i = 1; i <= n; ++i){


			for (int j = 1; j <= m; ++j){
			
					
				f >> a[i][j];
			}
		}

	}
	else {

		for (int i = 1; i <= n; ++i){


			for (int j = 1; j <= m; ++j){


				f >> a[j][i];
			}
		}
		swap(n, m);
		swap(r,c);
	}

	back(1);

	g << solutie<<"\n";

	return 0;
}