Cod sursa(job #2339092)

Utilizator skoda888Alexandru Robert skoda888 Data 8 februarie 2019 12:59:28
Problema Elimin Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

int N, a[100][1000], v[1000], i, j, n, m, c, r, ans, curr, it;

inline int zeros(int x) {
	return x & (-x);
}

inline int cnt(int x) {
	int i = 0;
	while (x) {
		x -= zeros(x);
		++i;
	}
	return i;
}

int main()
{
	ifstream fin("elimin.in");
	ofstream fout("elimin.out");
	fin >> n >> m >> r >> c;
	if (n > m) {
		swap(n, m);
		swap(r, c);
		for (j = 0; j < m; ++j)
			for (i = 0; i < n; ++i)
				fin >> a[i][j];
	}
	else {
		for (i = 0; i < n; ++i)
			for (j = 0; j < m; ++j)
				fin >> a[i][j];
	}
	N = (1 << n);
	ans = 0;
	for (it = 0; it < N; ++it)
		if (cnt(it) == r) {
			for (i = 0; i < m; ++i)
				v[i] = 0;
			curr = 0;
			for (i = 0; i < n; ++i)
				if (!(it & (1 << i)))
					for (j = 0; j < m; ++j)
						v[j] += a[i][j];
			sort(v, v + m);
			for (i = c; i < m; ++i)
				curr += v[i];
			ans = max(ans, curr);
		}
	fout << ans;
	return 0;
}