Pagini recente » Cod sursa (job #1958355) | Cod sursa (job #872895) | Cod sursa (job #987669) | Cod sursa (job #915946) | Cod sursa (job #1891384)
#include <fstream>
#include <vector>
#include <cstring>
#include <algorithm>
int mat[20][8000], sum[8000];
int main() {
std::ifstream inputFile("elimin.in");
std::ofstream outputFile("elimin.out");
int lineCount, columnCount, delLines, delColumns;
inputFile >> lineCount >> columnCount >> delLines >> delColumns;
if (lineCount <= columnCount) {
for (int i = 1; i <= lineCount; ++i)
for (int j = 1; j <= columnCount; ++j)
inputFile >> mat[i][j];
}
else {
std::swap(lineCount, columnCount);
std::swap(delLines, delColumns);
for (int j = 1; j <= columnCount; ++j)
for (int i = 1; i <= lineCount; ++i)
inputFile >> mat[i][j];
}
int solution = 0;
for (int config = 0; config < (1 << lineCount); ++config) {
if (__builtin_popcount(config) != delLines)
continue;
for (int i = 1; i <= columnCount; ++i)
sum[i] = 0;
for (int i = 1; i <= lineCount; ++i) {
if ((config >> (i - 1)) & 1)
continue;
for (int j = 1; j <= columnCount; ++j)
sum[j] += mat[i][j];
}
std::sort(sum + 1, sum + columnCount + 1);
int curr = 0;
for (int i = columnCount; i > delColumns; --i)
curr += sum[i];
solution = std::max(solution, curr);
}
outputFile << solution << '\n';
inputFile.close();
outputFile.close();
return 0;
}
//Trust me, I'm the Doctor!