Cod sursa(job #6991)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 21 ianuarie 2007 11:27:47
Problema Elimin Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 1, Clasa a 9-a si gimnaziu Marime 1.28 kb
#include <fstream.h>

ifstream f1("elimin.in");
ofstream f2("elimin.out");

int main(){
    int n,m,r,c,i,j,x[7300],y[7300],poz,max[7300];
    int **a;
    a=new int*[7300];
    for (i=0;i<7300;i++)a[i]=new int[7300];
    
    long long l[7300],p[7300],s,sum,min;
    f1>>n;f1>>m;f1>>r;f1>>c;
    sum=0;
    for (i=1;i<=n;i++){
        s=0;x[i]=1;max[i]=0;
        for (j=1;j<=m;j++){
            f1>>a[i][j];y[j]=1;
            s=s+a[i][j];
            if (a[i][j]>max[i])max[i]=a[i][j];
        }
        l[i]=s;
        sum=sum+l[i];
    }
    for (j=1;j<=r;j++){
        min=233600000;
        for (i=1;i<=n;i++)if (x[i]==1&&l[i]<min){min=l[i];poz=i;}
                             else if (x[i]==1&&l[i]==min&&max[poz]<max[i]){min=l[i];poz=i;}
        x[poz]=0;sum=sum-min;
    }
    for (j=1;j<=m;j++){
        p[j]=0;
        for (i=1;i<=n;i++){
            p[j]=p[j]+a[i][j]*x[i];
        }
    }
    for (i=1;i<=c;i++){
        min=233600000;
        for (j=1;j<=m;j++)if (y[j]==1&&p[j]<min){min=p[j];poz=j;}
        y[poz]=0;sum=sum-min;
    }
    f2<<sum<<'\n';
    /*
    for (i=1;i<=n;i++)f2<<x[i]<<" ";
    f2<<'\n';
    for (j=1;j<=m;j++)f2<<y[j]<<" ";
    */
    for (i=0;i<7300;i++)delete a[i];
    f1.close();
    f2.close();
    return 0;
}