Cod sursa(job #2011650)

Utilizator crisana stanescu cris Data 16 august 2017 20:40:28
Problema Elimin Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <iostream>
#include <fstream>
#define m1 7294
#define m2 14588
using namespace std;
ifstream f(" ");
ofstream g(" ");
int m,n,r,c,a[m2],rez=0,v[m1][m1],t;
void citire()
{int i,j;
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
f>>v[i][j];}
int sumtot()
{int s=0,i,j;
for (i=1;i<=m;i++)
{for (j=1;j<=n;j++)
{s=s+v[i][j];}}
return s;
}
int com(int a[])
{int i,j,o=0;
for (i=1;i<=r;i++)
{for (j=r+1;j<=(r+c);j++)
o=o+v[a[i]][a[j]];}
return o;
}
int distinct (int x,int y,int z)
{int i,c=0;
for (i=x;i<y;i++)
{if ((a[i])==z) c=c+1;}
if (c==0) return 1;
else return 0;}
void sum()
{int w=0,f,i,j;
for (i=1;i<=(r+c);i++)
{if (i<=r)
{for (j=1;j<=m;j++)
{w=w+v[a[i]][j];}}
if (i>r)
{for (j=1;j<=n;j++)
{w=w+v[j][a[i]];}}}
f=sumtot()-w+t;
if(f>rez) rez=f;
}
void bkt(int k)
{int i;
if (k<=r)
{for (i=1;i<=m;i++)
{if (distinct(1,k,i)==1) {a[k]=i;
                     bkt(k+1);}}}
if ((k>r)&&(k<(r+c)))
{for (i=1;i<=n;i++)
{if (distinct(r+1,k,i)==1) {a[k]=i;
                     bkt(k+1);}}}
if (k==(r+c))
{for (i=1;i<=n;i++)
{if (distinct(r+1,k,i)==1) {a[k]=i;
                            t=com(a);
                           sum();}}}

}
int main()
{f>>m>>n>>r>>c;
citire();
bkt(1);
g<<rez;
f.close();
g.close();
return 0;
}