Cod sursa(job #1073865)

Utilizator jul123Iulia Duta jul123 Data 6 ianuarie 2014 21:12:58
Problema Elimin Scor 10
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Marime 1.42 kb
#include<iostream>
#include<cstdio>
#include<algorithm>

using namespace std;

int a[16][7300], st[20], v[7300], s=0, n, m, c, r, maxim=0;
void back(int p)
{
    int i, j, nr=0;
    if(p==n)
    {
        s=0;
        for(i=0; i<m; i++)
            v[i]=0;
        for(i=0; i<n; i++)
            if(st[i]==0)
                nr++;
        if(nr==r)
        {
            for(i=0; i<n; i++)
                if(st[i]==1)
            {
                for(j=0; j<m; j++)
                    v[j]+=a[i][j];
            }
            sort(v, v+m);
            for(j=c; j<m; j++)
                s+=v[j];
        }
        if(s>maxim)
            maxim=s;
    }
    else
        {
            st[p]=0;
            back(p+1);
            st[p]=1;
            back(p+1);
}
}
int main()
{
    FILE *fin, *fout;
    fin=fopen("elimin.in", "r");
    fout=fopen("elimin.out", "w");

    int i, j, k, x, nr, aux;
    fscanf(fin, "%d %d %d %d", &n, &m, &c, &r);
    if(m<n)
    {
        aux=c;
        c=r;
        r=aux;
    for(i=0; i<n; i++)
        for(j=0; j<m; j++)
            {
                fscanf(fin, "%d", &a[j][i]);
            }
        aux=m;
        m=n;
        n=aux;
    }
    else{
        for(i=0; i<n; i++)
            for(j=0; j<m; j++)
            {
                fscanf(fin, "%d", &a[i][j]);
            }
    }
    back(0);
        fprintf(fout, "%d", maxim);
}