Cod sursa(job #51374)

Utilizator Omega91Nicodei Eduard Omega91 Data 11 aprilie 2007 17:30:11
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.17 kb
#include <stdio.h>
#include <fstream>
#include <iostream>
#include <conio.h>
using namespace std;
ofstream f2("flip.out");

long a[17][17];
long long sl, sc, st;
int n, m;
long long sumalin(int x);
long long sumacol(int x);


int main()
{
    FILE *f1;
    int i, j, k;
    bool stop, zero;
    f1 = fopen("flip.in", "r");
    fscanf(f1, "%d %d", &n, &m);
    for (i=1; i<=n; i++)
        for (j=1; j<=m; j++)
            fscanf(f1, "%d", &a[i][j]);
    //for (i=1; i<=n; i++)
    //    for (j=1; j<=m; j++)
    //        cout<<a[i][j]<<" ";
    //    cin>>i;
    //    return 0;
    while (!stop) {
        stop = true;
        //cout<<endl<<endl<<endl;
        for (i = 1; i <= n; i++){
            for (j = 1; j <= m; j++) {
                //cout<<a[i][j]<< " ";
                sl = sumalin(i);
                sc = sumacol(j);
                st = sl + sc -  2 * a[i][j];
                cout<<sl<<" "<<sc<<" "<<st<<endl;
//                getche();
                zero=false;
                if (sl < 0 || sc < 0 || st < 0) {
                    zero = true;
                    stop = false;
                }
                //cout<<zero;
                if (sl < sc && sl < st && zero) for (k = 1; k <= m; k++) a[i][k]=0-a[i][k];
                else if (sc < sl && sc < st && zero) for (k = 1; k <= n; k++) a[k][j]=0-a[k][j];
                else if (zero){
                    for (k = 1; k <= n; k++) a[i][k]=-a[i][k];
                    for (k = 1; k <= m; k++) a[k][j]=-a[k][j];
                }
                
            }
            //cout<<endl;
        }
    }
    st = 0;
    for (i = 1; i <= n; i++)
        for (j = 1; j <=m; j++)
            st+=a[i][j];
    f2 << st <<endl;
//    cin>>i;
    f2.close();
    fclose(f1);
    return 0;
}
            
long long sumalin(int x)
{
    long long aux;
    int j;
    aux = 0;
    for (j = 1; j <= m; j++)
    {
        cout<<a[x][j]<<endl;
        aux += a[x][j];
    }
    cout<<endl;
    return aux;
}

long long sumacol(int x)
{
    long long aux;
    int i;
    aux = 0;
    for (i = 1; i <=n; i++)
        aux += a[i][x];
    return aux;
}