Cod sursa(job #719508)

Utilizator andreistb1996Satirbasa Andrei andreistb1996 Data 21 martie 2012 20:45:34
Problema Elimin Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include<cstdio>
#include<algorithm>
using namespace std;
int aux,smax,i,j,m,n,r,c,x[10000],v[700][21];
ifstream f("elimin.in");
ofstream g("elimin.out");
void verifica()
{int s,i,j,sum[10000];
for(i=1;i<=m;i++)
	sum[i]=v[i][0];
for(i=1;i<=c;i++)
for(j=1;j<=m;j++)
	sum[j]=sum[j]-v[j][x[i]];
sort(sum+1,sum+1+m);
s=0;
for(i=r+1;i<=m;i++)
	s=s+sum[i];
if(s>smax)
	smax=s;}
int main()
{f>>m>>n>>r>>c;
if(m<n)
{for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
f>>v[j][m-i+1];
aux=n;
n=m;
m=aux;
aux=r;
r=c;
c=aux;}
else
{for(i=1;i<=m;i++)
	for(j=1;j<=n;j++)
	f>>v[i][j];}
for(i=1;i<=m;i++)
	for(j=1;j<=n;j++)
	{v[0][j]=v[0][j]+v[i][j];
	v[i][0]=v[i][0]+v[i][j];}
for(i=1;i<=c;i++)
	x[i]=i;
verifica();
	while(1)
{i=c;	
	while(x[i]==n-c+i)
	{i--;}
	if(i==0)
		break;
	else
	{x[i]++;
	for(j=i+1;j<=c;j++)
		x[j]=x[j-1]+1;
	verifica();}}
	g<<smax<<"\n";
 f.close();
g.close();
return 0;}