Cod sursa(job #467669)

Utilizator miculprogramatorA Cosmina - vechi miculprogramator Data 29 iunie 2010 21:26:51
Problema Elimin Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <stdio.h>
using namespace std;

int a[1001][1001];
int l[1001], c[1001];
int m, n, R, C;
int i, j, k;
int pozitie;
long int suma;

int minim (int v[10001], int dim)
{
    int z;
    int Min = 1000000, poz = 0;
    for (z=1; z<=dim; ++z)
        if (Min > v[z] && v[z] != -1)
        {
            Min = v[z];
            poz = z;
        }
    return poz;
}

int main ()
{
    FILE *f = fopen ("elimin.in","r");
    FILE *g = fopen ("elimin.out","w");
    fscanf (f,"%d %d %d %d", &m, &n, &R, &C);
    for (i=1; i<=m; ++i)
    {
        for (j=1; j<=n; ++j)
        {
            fscanf (f,"%d", &a[i][j]);
            c[j] += a[i][j];
            l[i] += a[i][j];
        }
    }

    for (k=1; k<=R; ++k)
    {
        pozitie = minim (l, m);
        for (i=1; i<=n; ++i)
            c[i] -= a[pozitie][i];
        l[pozitie] = -1;
    }

    for (k=1; k<=C; ++k)
    {
        pozitie = minim (c, n);
        for (i=1; i<=m; ++i)
            l[i] -= a[i][pozitie];
        c[pozitie] = -1;
    }

    for (i=1; i<=n; ++i)
        if (c[i] != -1)
            suma += c[i];

    fprintf (g,"%ld", suma);

    fclose(g);
    fclose(f);
    return 0;
}