Cod sursa(job #1094863)

Utilizator MeDeiaAndreia C MeDeia Data 29 ianuarie 2014 22:27:35
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.91 kb
#include <iostream>
#include<math.h>
#include<fstream>
using namespace std;
void flipl(long int a[][16],int n,int m)
{
    int i,j;
    for(i=1;i<=n;i++)
    {
        int sn=0,sp=0;
        for(j=1;j<=m;j++)
            if(a[i][j]<0)
                sn=sn+a[i][j];
            else
                sp=sp+a[i][j];
        if(-sn>sp)
            for(j=1;j<=m;j++)
                a[i][j]=-a[i][j];

    }
}
void flipc(long int a[][16],int n,int m)
{
    int i,j;
    for(j=1;j<=m;j++)
    {
        int sn=0,sp=0;
        for(i=1;i<=n;i++)
            if(a[i][j]<0)
                sn=sn+a[i][j];
            else
                sp=sp+a[i][j];
        if(-sn>sp)
            for(i=1;i<=n;i++)
                a[i][j]=-a[i][j];

    }
}
int verifc (long int a[][16],int n,int m)
{
    int ver=1,i,j;
    for(j=1;j<=m;j++)
    {
        int sn=0,sp=0;
        for(i=1;i<=n;i++)
            if(a[i][j]<0)
                sn=sn+a[i][j];
            else
                sp=sp+a[i][j];
        if(-sn>sp)
            ver=0;
    }
    return ver;
}
int verifl (long int a[][16],int n,int m)
{
    int ver=1,i,j;
    for(i=1;i<=n;i++)
    {
        int sn=0,sp=0;
        for(j=1;j<=m;j++)
            if(a[i][j]<0)
                sn=sn+a[i][j];
            else
                sp=sp+a[i][j];
        if(-sn>sp)
            ver=0;
    }
    return ver;
}
int suma(long int a[][16],int n,int m)
{
    int s=0,i,j;
    for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
        s=s+a[i][j];
    return s;
}
int main()
{
    long int a[16][16],i,j;
    int n,m;
    fstream f("flip.in",ios::in);
    fstream g("flip.out",ios::out);
    f>>n>>m;
    for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
    f>>a[i][j];
    do
    {
    flipl(a,n,m);
    flipc(a,n,m);
    }
    while ((verifc(a,n,m)+verifl(a,n,m))==0);
    g<<suma(a,n,m);
    f.close();
    g.close();
    return 0;
}