Pagini recente » Cod sursa (job #2225368) | Cod sursa (job #1366106) | Cod sursa (job #828681) | Cod sursa (job #405799) | Cod sursa (job #461790)
Cod sursa(job #461790)
#include <stdio.h>
int m,n, r, c;
int matrice[8000][8000];
int coloane[8000];
int coloanes[8000];
int idxranduri[8000];
long max;
int main(void)
{
freopen("elimin.in", "r", stdin);
freopen("elimin.out", "w", stdout);
scanf("%d %d %d %d", &m, &n, &r, &c);
int i;
for(i=0;i<m;++i)
{
for(int j=0;j<n;++j)
{
scanf("%d ", &matrice[i][j]);
}
}
for(i=0;i<m;++i)
{
for(int j=0;j<n;++j)
{
coloane[j] += matrice[i][j];
}
}
int rand = 0;
idxranduri[0] = 0;
while(idxranduri[0] < m)
{
if(idxranduri[rand] < m)
{
++rand;
idxranduri[rand] = idxranduri[rand-1]+1;
}
else
{
--rand;
++idxranduri[rand];
}
if(rand >= r)
{
for(i=0; i<n; ++i)
coloanes[i] = coloane[i];
for(i=0;i<r;++i)
{
for(int j=0;j<n;++j)
coloanes[j] -= matrice[idxranduri[i]][j];
}
for(i=1;i<n;++i)
{
int a = coloanes[i];
int poz = i-1;
while(poz>=0 && coloanes[poz] > a)
{
coloanes[poz+1] = coloanes[poz];
--poz;
}
coloanes[poz+1] = a;
}
int sum = 0;
for(i=c;i<n;++i)
sum += coloanes[i];
if(sum > max)
max = sum;
--rand;
++idxranduri[rand];
}
}
printf("%ld\n", max);
return 0;
}