Cod sursa(job #2339213)

Utilizator Hexor_ALXAlexandru Olteanu Hexor_ALX Data 8 februarie 2019 16:03:48
Problema Jocul Flip Scor 100
Compilator cpp-32 Status done
Runda Arhiva de probleme Marime 1.42 kb
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll const mod=1000000007;
ll const md=998244353;
ll mypowr(ll a,ll b) {ll res=1;a%=mod; assert(b>=0);
for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
ll mypow(ll a,ll b) {ll res=1;assert(b>=0);
for(;b;b>>=1){if(b&1)res=res*a;a=a*a;}return res;}
ifstream in("flip.in");
ofstream out("flip.out");
#define mp make_pair
#define pb push_back
#define pf push_front
#define fi first
#define se second

int f[20][20];
int f1[20][20];

int main()
{   cout<<fixed<<setprecision(12);
    cin.tie(0);cout.tie(0);
    ios_base::sync_with_stdio(0);

   ll n,m;
   in>>n>>m;
   for(int i=1;i<=n;++i){
      for(int j=1;j<=m;++j){
        in>>f[i][j];
      }
   }
   ll cnt=0;
   for(int i=1;i<=m;++i){
      ll sum=0;
      for(int j=1;j<=n;++j){
        sum+=f[j][i];
      }
      cnt+=abs(sum);
   }
   ll u=(1<<n);
   for(int i=1;i<u;++i){
    for(int j=1;j<=n;++j){
        for(int t=1;t<=m;++t){
            f1[j][t]=f[j][t];
        }
    }
    ll x=i;
    ll sum=1;
    while(x){
        if(x&1){
             for(int j=1;j<=m;++j)f1[sum][j]=-f1[sum][j];
        }
        ++sum;x/=2;
    }
    sum=0;
    for(int j=1;j<=m;++j){
        ll sum2=0;
        for(int t=1;t<=n;++t){
            sum2+=f1[t][j];
        }
        sum+=abs(sum2);
    }
    cnt=max(cnt,sum);
   }
   out<<cnt<<'\n';


    return 0;
}