Mai intai trebuie sa te autentifici.
Cod sursa(job #2529036)
Utilizator | Data | 22 ianuarie 2020 21:32:20 | |
---|---|---|---|
Problema | Jocul Flip | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 1.68 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];
}
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();
for(i=0;i<M;i++)
if(x4[i]==1)
minus1( i);
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]==0)
{
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);
cout<<summax<<endl;
return 0;
}