Cod sursa(job #1511441)

Utilizator NuadorDemeter Csaba Nuador Data 26 octombrie 2015 19:32:29
Problema Jocul Flip Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.62 kb
#include <stdio.h>

int t[16][16];
long long tv[16],tf[16];
int n,m;

int main(){
    freopen("flip.in","r",stdin);
    //freopen("flip.out","w",stdout);
    int i,j,x,y;
    scanf("%d%d",&n,&m);
    for(i=0;i<n;i++){for(j=0;j<m;j++){
        scanf("%d",&t[i][j]);
        tv[j]+=t[i][j];
        tf[i]+=t[i][j];
    }}
    /*for(i=0;i<n;i++){for(j=0;j<m;j++){printf("%d ",t[i][j]);}printf("\n");}
    for(i=0;i<m;i++){printf("%d ",tv[i]);}printf("\n");
    for(i=0;i<n;i++){printf("%d ",tf[i]);}printf("\n");*/

    int ki=1;
    long long minv,minf,vi,vj;
    while(ki){
        minv=16000001;
        minf=16000001;
        for(i=0;i<m;i++){
            if(tv[i]<minv){
                minv=tv[i];
                vj=i;
            }
        }
        for(i=0;i<n;i++){
            if(tf[i]<minf){
                minf=tf[i];
                vi=i;
            }
        }

        if((minv>=0 && minf>=0)){ki=0;break;}

        for(i=0;i<m;i++){
            if(i!=vj){
                t[vi][i]*=-1;
            }
        }
        for(i=0;i<n;i++){
            if(i!=vi){
                t[i][vj]*=-1;
            }
        }
        for(i=0;i<n;i++){
            for(j=0;j<m;j++){
                tv[j]=0;
                tf[i]=0;
            }
        }
        for(i=0;i<n;i++){
            for(j=0;j<m;j++){
                tv[j]+=t[i][j];
                tf[i]+=t[i][j];
            }
        }
    }
    //for(i=0;i<n;i++){for(j=0;j<m;j++){printf("%d ",t[i][j]);}printf("\n");}
    int sum=0;
    for(i=0;i<m;i++){
        sum+=tv[i];
    }
    printf("%d\n",sum);
    return 0;
}