Cod sursa(job #2471244)

Utilizator Radu2914Vaduva Radu-Andrei Radu2914 Data 10 octombrie 2019 17:25:22
Problema Jocul Flip Scor 30
Compilator c-64 Status done
Runda Arhiva de probleme Marime 2.79 kb
#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *flip_in=fopen("flip.in","r");
    FILE *flip_out=fopen("flip.out","w");

    unsigned int N,M;

    fscanf(flip_in,"%u",&N);
    fscanf(flip_in,"%u",&M);

    if(N<=0 || M<=0 || N>16 || M>16)
    {
        exit(-1);
    }

    long long int a[N][M],b[N][M];
    long long int x;
    long long int i=0,j=0;

    long long int max1=0,max2=0,max=0,sum=0;

    while(i<N)
    {
        while(j<M)
        {
            fscanf(flip_in,"%lli",&x);
            a[i][j]=x;
            b[i][j]=x;
            j++;
        }
        j=0;
        i++;
    }

    printf("\n");
    printf("Initial:");
    printf("\n");
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
            printf("%lli ",a[i][j]);
        }
        printf("\n");
    }


    for(i=0;i<N;i++)
    {
        sum=0;

        for(j=0;j<M;j++)
        {
            sum=sum+a[i][j];
        }

        if(sum<0)
        {
            sum=-sum;

            for(j=0;j<M;j++)
            {
                a[i][j]=-a[i][j];
            }
        }

        max1=max1+sum;
    }

    for(j=0;j<M;j++)
    {
        sum=0;

        for(i=0;i<N;i++)
        {
            sum=sum+a[i][j];
        }

        if(sum<0)
        {
            max1=max1-sum;
            sum=-sum;

            for(i=0;i<N;i++)
            {
                a[i][j]=-a[i][j];
            }

            max1=max1+sum;
        }
    }

    printf("\n");
    printf("Varianta_1:");
    printf("\n");
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
            printf("%lli ",a[i][j]);
        }
        printf("\n");
    }

    for(j=0;j<M;j++)
    {
        sum=0;

        for(i=0;i<N;i++)
        {
            sum=sum+b[i][j];
        }

        if(sum<0)
        {
            sum=-sum;

            for(i=0;i<N;i++)
            {
                b[i][j]=-b[i][j];
            }
        }

        max2=max2+sum;
    }

    for(i=0;i<N;i++)
    {
        sum=0;

        for(j=0;j<M;j++)
        {
            sum=sum+b[i][j];
        }

        if(sum<0)
        {
            max2=max2-sum;
            sum=-sum;

            for(j=0;j<M;j++)
            {
                 b[i][j]=-b[i][j];
            }

            max2=max2+sum;
        }

    }

    printf("\n");
    printf("Varianta_2:");
    printf("\n");
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
            printf("%lli ",b[i][j]);
        }
        printf("\n");
    }


    if(max1<max2)
    {
        fprintf(flip_out,"%lli",max2);
    }
    else
    {
        fprintf(flip_out,"%lli",max1);
    }

    fclose(flip_in);
    fclose(flip_out);

    return 0;
}