Pagini recente » Cod sursa (job #1496573) | Cod sursa (job #631960) | Cod sursa (job #1865382) | Cod sursa (job #2321706) | Cod sursa (job #485266)
Cod sursa(job #485266)
#include <fstream>
#include <iostream>
#define MAXLENGTH 16
#define MAXWIDTH 16
#define MINVALUE -1000000
#define MAXVALUE 1000000
using namespace std;
int i, j;
int arraySum (int *array, int length)
{
int sum = 0;
for (i = 0; i < length; ++i)
sum += *(array + i);
return sum;
}
void flipSign (int *array, int length, int step)
{
for (i = 0; i < length ; i += step)
*(array + i) = - *(array + i);
}
int main ()
{
ifstream f ("flip.in");
ofstream g ("flip.out");
int N, M, *flip, sum;
bool a = true;
f >> N;
cout << N;
g << "a";
f >> M;
if (N <= MAXLENGTH || M <= MAXWIDTH)
flip = new int[N * M];
else
{
g << "Error: Dimensions out of margin";
return -1;
}
for (i = 0; i < N; ++i)
for (j = 0; j < M; ++j)
{
f >> flip[(i * M) + j];
if (flip[(i * M) +j] < MINVALUE || flip[(i * M) + j] > MAXVALUE)
{
g << "Error: Value out of margin";
return -1;
}
}
while(a)
{
a = false;
for (i = 0; i < N; ++i)
{
sum = arraySum (flip, N * M);
flipSign (flip + (i * N), M, 1);
if (sum >= arraySum (flip, N * M))
flipSign (flip + (i * N), M ,1);
else
a = true;
}
for (i = 0; i < M; ++ i)
{
sum = arraySum (flip, N * M);
flipSign (flip + i, N, M);
if (sum >= arraySum (flip, N * M))
flipSign (flip + i, N, M);
else
a = true;
}
g << arraySum (flip, N * M);
}
return 0;
}