Cod sursa(job #2313503)

Utilizator livliviLivia Magureanu livlivi Data 6 ianuarie 2019 23:09:28
Problema Elimin Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

ifstream cin ("elimin.in");
ofstream cout ("elimin.out");

vector<vector<int>> a;
vector<int> sp;

int main(){
	int n, m; cin >> n >> m;
	int r, c; cin >> r >> c;

	if (n < m){
		a.resize(m);
		sp.resize(m);
	}
	else {
		a.resize(n);
		sp.resize(n);
	}

	for(int i = 0; i < n; i++)
		for(int j = 0; j < m; j++){
			int x; cin >> x;
			if (n < m) a[j].push_back(x);
			else a[i].push_back(x);
		}

	if (n < m){
		swap(n, m);
		swap(r, c);
	}

	int ans = 0;
	for(int i = 0; i < (1 << m); i++){
		int cnt = 0;
		for(int j = 0; j < m; j++)
			cnt += (((1 << j) & i) != 0);

		if (cnt != c) continue;

		cnt = 0;
		for(int ii = 0; ii < n; ii++){
			sp[ii] = 0;

			for(int j = 0; j < m; j++)
				if (((1 << j) & i) == 0) sp[ii] += a[ii][j];

			cnt += sp[ii];
		}

		sort(sp.begin(), sp.end());

		for(int ii = 0; ii < r; ii++)
			cnt -= sp[ii];

		ans = max(ans, cnt);
	}

	cout << ans << endl;
	return 0;
}