Pagini recente » Cod sursa (job #2830591) | Cod sursa (job #2105063) | Cod sursa (job #1701192) | Cod sursa (job #2406684) | Cod sursa (job #1060830)
#include<stdio.h>
#include<algorithm>
using namespace std;
short int a[8000][90];
bool v[90];
int n, m, l, c, solutie;
int sol[8000];
void verifica()
{
for (int i = 1; i <= n; ++i)
{
sol[i] = 0;
for (int j = 1; j <= m; ++j)
{
if (!v[j])
{
sol[i] += a[i][j];
}
}
}
sort(sol + 1, sol + n + 1);
int posibila_solutie = 0;
for (int i = l + 1; i <= n; ++i)
posibila_solutie += sol[i];
if (posibila_solutie > solutie)
solutie = posibila_solutie;
}
void back(int pas, int val)
{
if (pas<=n && val == c)
{
verifica();
return;
}
else if (pas <= n)
{
for (int i = 0; i <= 1; ++i)
{
v[pas] = i;
back(pas + 1, val + i);
v[pas] = false;
}
}
return;
}
int main()
{
FILE*f = fopen("elimin.in", "r");
fscanf(f, "%d %d %d %d", &n, &m, &l, &c);
if (n >= m)
{
for (int i = 1; i <= n; ++i)
{
for (int j = 1; j <= m; ++j)
{
fscanf(f, "%hd", &a[i][j]);
}
}
}
else
{
swap(n, m);
swap(l, c);
for (int i = 1; i <= m; ++i)
{
for (int j = n; j; --j)
{
fscanf(f, "%hd", &a[j][i]);
}
}
}
fclose(f);
back(1,0);
FILE*g = fopen("elimin.out", "w");
fprintf(g, "%d", solutie);
fclose(g);
return 0;
}