Cod sursa(job #922517)

Utilizator readynessBarabas Barnabas readyness Data 22 martie 2013 11:53:31
Problema Elimin Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.51 kb
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    short n,m,r,c;
    ifstream f("elimin.in");
    f>>m>>n>>r>>c;
    short t[m][n],i,j;
    long long ossz=0,sor[m],osz[n];
    fill(sor,sor+m,0);
    fill(osz,osz+n,0);
    for(i=0;i<m;i++)
        for(j=0;j<n;j++)
        {
            f>>t[i][j];
            osz[j]+=t[i][j];
            sor[i]+=t[i][j];
        }
    int sori,oszli;
    long long sormin=1000000000000,oszmin=1000000000000;
    while(r>0||c>0)
    {
        for(i=0;i<m;i++)
        {
            if(sor[i]<sormin&&sor[i]!=-1)
            {
                sormin=sor[i];
                sori=i;
            }
        }
        for(i=0;i<n;i++)
        {
            if(osz[i]<oszmin&&osz[i]!=-1)
            {
                oszmin=osz[i];
                oszli=i;
            }
        }
        if((oszmin<sormin&&r>0)||(r>0&&c==0))
        {
            for(i=0;i<m;i++)
            {
                sor[i]-=t[i][oszli];
            }
            osz[oszli]=-1;
            r--;
        }
        if((oszmin>=sormin&&c>0)||(c>0&&r==0))
        {
            for(i=0;i<n;i++)
            {
                osz[i]-=t[sori][i];
            }
            sor[sori]=-1;
            c--;
        }
    }
    for(i=0;i<m;i++)
    {
        if(sor[i]>-1)
            ossz+=sor[i];
    }
    /*for(i=0;i<n;i++)
    {
        if(osz[i]>-1)
            ossz+=osz[i];
    }*/
    ofstream g("elimin.out");
    g<<ossz<<"\n";
}