Pagini recente » Cod sursa (job #2380759) | Cod sursa (job #3184485) | Cod sursa (job #1639432) | Cod sursa (job #1303421) | Cod sursa (job #1207645)
#include <fstream>
using namespace std;
#define INF 2147483647
ifstream f("flip.in");
ofstream g("flip.out");
int l[17],c[17],a[17][17],N,M,lmin,cmin,pozl,pozc;
long long scurenta, sveche;
int main()
{
std::ios::sync_with_stdio(false);
int i,j;
f>>N>>M;
for(i=1;i<=N;i++)
for(j=1;j<=M;j++)
f>>a[i][j],scurenta+=a[i][j],l[i]+=a[i][j],c[j]+=a[i][j];
while(scurenta > sveche)
{
lmin=INF;
cmin=INF;
for(i=1;i<=N;i++)
if(l[i]<lmin) {lmin=l[i];pozl=i;}
for(i=1;i<=M;i++)
if(c[i]<cmin) {cmin=c[i];pozc=i;}
///
sveche=scurenta,scurenta=0;;
///
if(lmin<=cmin)
for(i=1;i<=M;i++)
a[pozl][i]*=-1;
else
if(cmin<lmin)
for(i=1;i<=N;i++)
a[i][pozc]*=-1;
///
for(i=1;i<=N;i++) l[i]=0;
for(i=1;i<=M;i++) c[i]=0;
for(i=1;i<=N;i++)
for(j=1;j<=M;j++)
scurenta+=a[i][j],l[i]+=a[i][j],c[j]+=a[i][j];
}
g<<sveche;
///calculez minimul din vectorii l si c
///recalculez scurenta si vechea scurenta devine sveche
///verific daca scurenta > sveche. Daca nu, opresc algoritmul si afisez sveche
///inlocuiesc in tabel linia sau coloana minima
///
return 0;
}