Mai intai trebuie sa te autentifici.
Cod sursa(job #2529429)
Utilizator | Data | 23 ianuarie 2020 15:06:47 | |
---|---|---|---|
Problema | Jocul Flip | Scor | 10 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 1.77 kb |
#include <iostream>
#include<fstream>
using namespace std;
int x4[15], n4, xc[15];
int i,j, N,M, a[15][15], a2[15][15], suma2 = 0, summax , sump, sumn;
ifstream f("flip.in");
ofstream g ("flip.out");
void citire()
{
f>>M>>N;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
f>>a[i][j];
}
void copiere()
{
for(i=0;i<M;i++)
for(j=0;j<N;j++)
a2[i][j]=a[i][j];
}
void init()
{
for(i=0;i<N;i++)
xc[i]=0;
}
int suma(int a[15][15],int M,int N) /// calcularea sumei elementelor matricei
{int s=0;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
s+=a[i][j];
return s;
}
void minus1( int k)
{
for(j=0;j<=N;j++)
a[k][j]*=-1;
}
void BackRec4(int k)
{ int i;
for(i=0;i<=1;i++)
{ x4[k]=i;
if (k==M)
{
copiere();
init();
for(int i2=0;i2<M;i2++)
if(x4[i2]==1)
minus1( i2);
for(int w= 0;w<N;w++)
{
sumn=sump=0;
for(j=0;j<M;j++)
if(a2[j][w]>=0)
sump+=a2[j][w];
else
sumn-=a2[j][w];
if(sump-sumn<0)
{if(xc[w]==1)
xc[w]=0;
else
xc[w]=1;
}
}
for(j=0;j<N;j++)
if(xc[j]==1)
{
for(int ii =0;ii <M;ii++)
a[ii][j]*=-1;
}
suma2=suma(a2,M,N);
if(suma2>summax)
summax=suma2;
}
else BackRec4(k+1);
}
}
int main()
{
citire();
summax=suma(a,M,N);
BackRec4(0);
g<<summax;
return 0;
}