Cod sursa(job #1027260)

Utilizator Pop_EmilPal Tamas Pop_Emil Data 12 noiembrie 2013 17:38:43
Problema Elimin Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <iostream>
 #include <stdio.h>
#include <algorithm>
using namespace std;

int n,m,r,c,t[8000][20],tot,sum[8000];
char er[8000];
int rez=-1;

void _read()
{
  freopen("elimin.in","r",stdin);
  freopen("elimin.out","w",stdout);

  scanf("%d %d %d %d",&m,&n,&r,&c);

if(m >= n)
 {
  for(int i=0;i<m;++i)
    for(int j=0;j<n;++j)
        scanf("%d",&t[i][j]);
 }
else
 {
    swap(r,c);
    swap(n,m);

     for(int i=0;i<n;++i)
      for(int j=m-1;j>=0;--j)
        scanf("%d",&t[j][i]);

 }

}

void back(int arg,int poz)
{

    if(arg==c)
    {
      tot=0;

        for(int i=0;i<m;i++)
        {
           sum[i]=0;
            for(int j=0;j<n;j++)
                if(!er[j]){ sum[i]+=t[i][j]; tot+=t[i][j]; }
        }

       sort(sum,sum+m);

       for(int i=0;i<r;i++)
         tot-=sum[i];


       if(rez < tot)rez=tot;

      return;
    }
    else
    if(poz==n )
      return;
    else
    {
    er[poz]=1;
    back(arg+1,poz+1);

    er[poz]=0;
    back(arg,poz+1);

    }

}

int main()
{

 _read();

 back(0,0);

 printf("%d",rez);

return 0;
}