Pagini recente » Cod sursa (job #1085941) | Cod sursa (job #1783924) | Rating CEX SUCEAVA (HAI_LA_OLIMPIADA_2019-2020_SV) | Cod sursa (job #2295545) | Cod sursa (job #135629)
Cod sursa(job #135629)
#include<cstdio>
#include<cstring>
#include<algorithm>
int n,m,r,c,i,j,a[20][600],aux,doila[20],max,cod,nbit[70000],
lin,col,s[600],sc,sol,max1;
int main()
{
FILE *f,*g;f=fopen("elimin.in","r");g=fopen("elimin.out","w");
fscanf(f,"%d%d%d%d",&m,&n,&r,&c);
if(m<=n)for(i=1;i<=m;i++)for(j=1;j<=n;j++)fscanf(f,"%d",&a[i][j]);
else
{ for(i=1;i<=m;i++)for(j=1;j<=n;j++)fscanf(f,"%d",&a[j][i]);
aux=m;m=n;n=aux;aux=r;r=c;c=aux;
}
if(r==0)
{ for(i=0;i<m;i++)
for(j=0;j<n;j++)
s[j+1]+=a[i][j];
std::sort(s+1,s+m+1);
sol=0;
for(i=c+1;i<=n;i++) sol+=s[i];
fprintf(g,"%d\n",sol);
fcloseall();
return 0;
}
doila[0]=1;
for(i=1;i<=m;i++)doila[i]=doila[i-1]<<1;
max=doila[m];max1=doila[m-1];
for(cod=0;cod<max1;cod++)
{nbit[cod<<1]=nbit[cod];nbit[(cod<<1)|1]=nbit[cod]+1;}
for(cod=0;cod<max;cod++)
{ if(nbit[cod]==r)
{ memset(s,0,sizeof(s));
for(lin=0;lin<m;lin++)
if(!(cod&doila[lin]))
for(col=0;col<n;col++)s[col+1]+=a[lin][col];
std::sort(s+1,s+m+1);
sc=0;
for(i=c+1;i<=n;i++)sc+=s[i];
if(sc>sol)sol=sc;
}
}
fprintf(g,"%d\n",sol);
fcloseall();
return 0;
}