Cod sursa(job #1208827)

Utilizator icristi01Cristian Ilca icristi01 Data 16 iulie 2014 17:24:33
Problema Jocul Flip Scor 30
Compilator c Status done
Runda Arhiva de probleme Marime 1.63 kb
#include <stdio.h>

int arraySum(long a[], int size) {
    int sum=0,i=0;
    for(i=0; i<size; i++)
        sum+=a[i];
    return sum;
}

void displayMatrix(int a[16][16], int n, int m) {
    int i=0, j=0;
    printf("The matrix: \n");
    for(i=0;i<n;i++) {
        for(j=0;j<m;j++) {
        }
        printf("\n");
    }
}

long matrixSum(long a[16][16], int n, int m) {
    int i=0, j=0;
    long sum=0;
    for(i=0; i<n; i++) {
        for(j=0; j<m; j++) {
            sum+=a[i][j];
        }
    }
    return sum;
}

int main(){
    FILE *f, *g;
    int n,m,i,i1,j,j1,rowC=0, colC=0, rerun=0;
    long matrix[16][16], rowToFlip[16], invertedRow[16], colToFlip[16], invertedCol[16];
    f=fopen("flip.in","r");
    g=fopen("flip.out","w");
    fscanf(f,"%d %d",&n,&m);
    for(i=0;i<n;i++) {
        for(j=0;j<m;j++) {
            fscanf(f,"%ld ",&matrix[i][j]);
        }
    }
	for(rerun=0; rerun<2; rerun++) {
		for(j=0; j<m; j++) {
			for(i=0; i<n; i++) {
				colToFlip[colC] = matrix[i][j];
				invertedCol[colC] = colToFlip[colC]*(-1);
				colC++;
			}
			if(arraySum(colToFlip, colC) < arraySum(invertedCol, colC)) {
					for(i1=0; i1<n; i1++) {
						matrix[i1][j]*=-1;
					}
			}
			colC=0;
		}
		for(i=0;i<n;i++)
		{
			for(j=0;j<m;j++)
			{
				rowToFlip[rowC] = matrix[i][j];
				invertedRow[rowC] = rowToFlip[rowC]*(-1);
				rowC++;
			}
			if(arraySum(rowToFlip, rowC) < arraySum(invertedRow, rowC)) {
				for(j1=0; j1<m; j1++) {
					matrix[i][j1]*=-1;
				}
			}
			rowC=0;
		}
	}
    fprintf(g,"%ld",matrixSum(matrix, n, m));
    fclose(f);
    fclose(g);
    return 0;
}