Cod sursa(job #963050)

Utilizator Claudiu95Vartolomei Alexandru Claudiu Claudiu95 Data 16 iunie 2013 14:17:03
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<iostream>
#include<fstream>
using namespace std;
int maxi=0,a[33][33],x[33],n,m;
ifstream f("flip.in");
ofstream g("flip.out");
void citire(){
    f>>n>>m;
    int i,j;
    for(i=1;i<=n;++i)
        for(j=1;j<=m;++j){
            f>>a[i][j];
            maxi+=a[i][j];
        }
	cout<<maxi<<endl;
}
int sol(int k){
    return k==n;
}
void modificarel(int linie){
    for(int i=1;i<=m;++i)
        a[linie][i]*=-1;
}
int suma(){
	int s=0,s1,i,j;
	for(i=1;i<=m;++i){
		s1=0;
		for(j=1;j<=n;++j)
			s1+=a[j][i];
		if(s1<0)
			s1=-s1;
		s+=s1;
	}
	return s;
}
void bkt(int k){
    int i;
    x[k]=-1;
    while(x[k]<1){
        ++x[k];
        if(sol(k)){
            for(i=1;i<=n;++i){
				
                if(x[i])
					modificarel(i);
			}
				int xx=suma();
				
				if(xx>maxi)
					maxi=xx;
			for(i=1;i<=n;++i)
				if(x[i])
					modificarel(i);
			
        }
        else
            bkt(k+1);
    }
}
int main(){
    citire();
    bkt(1);
    g<<maxi;
    return 0;
}