Cod sursa(job #992414)

Utilizator AeroHHorea Stefan AeroH Data 1 septembrie 2013 19:22:27
Problema Elimin Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
//#include <fstream>
#include <cstdio>
#include <algorithm>
#include <ctime>
#include <cstdlib>
using namespace std;
//ifstream f("elimin.in");
//ofstream g("elimin.out");
FILE *fin=fopen("elimin.in","r");
FILE *fout=fopen("elimin.out","w");
int m[20][550],i,j,n,l,c,k,lt,ct,v[21];
int sums[550],mini[550],sum,rasp;
clock_t t;

int verif()
{
    int sum=0;
    for (int i=1;i<=l;++i)
    for (int j=1;j<=c;++j)
    if  (!v[i])
    {
    sums[j]+=m[i][j];
    }
    else break;

    sort (sums+1,sums+c+1);
    /*for (int i=1;i<=c;++i)
    g<<sums[i];*/

    for (int i=c;i>ct;--i)
    sum+=sums[i];

    for (int i=1;i<=c;++i)
    sums[i]=0;
    return sum;
}

int main()
{
    t = clock();
    fscanf(fin,"%d%d%d%d",&l,&c,&lt,&ct);
    /*if (c>l)
    l^=c,c^=l,l^=c,lt^=ct,ct^=lt,lt^=ct;*/
    if (l<=c)
    for (i=1;i<=l;++i)
    for (j=1;j<=c;++j)
    fscanf(fin,"%d",&m[i][j]);
    else
    {
    for (i=1;i<=l;++i)
    for (j=1;j<=c;++j)
    fscanf(fin,"%d",&m[j][i]);
    l^=c,c^=l,l^=c,lt^=ct,ct^=lt,lt^=ct;
    }
    for (i=1;i<=lt;++i)v[i]=1;
    do
    {
        sum=verif();
        if (sum>rasp)
        rasp=sum;
        if (((double)clock()-t)/CLOCKS_PER_SEC>1.2)
        fprintf(fout,"%d",rasp),exit(0);
    }while(prev_permutation(v+1,v+l+1));

    fprintf(fout,"%d",rasp);
    return 0;
}