Pagini recente » Istoria paginii utilizator/titus | Monitorul de evaluare | Cod sursa (job #13879) | Cod sursa (job #762912) | Cod sursa (job #185621)
Cod sursa(job #185621)
#include<stdio.h>
#include<algorithm>
using namespace std;
int sum[522],sum2[522],s2,k,su,Max,i,j,x,aux,n,m,l,c,a[522][19];
char ok,v[19];
int cmp(int a,int b){
return a>b;
}
int main(){
FILE *f=fopen("elimin.in","r");
fscanf(f,"%d %d %d %d",&n,&m,&l,&c);
Max=-32001;
if(n>=m){
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
fscanf(f,"%d",&a[i][j]);
su+=a[i][j];
}
}
}
else{
for(i=1;i<=n;i++){
for(j=m;j>=1;j--){
fscanf(f,"%d",&a[j][i]);
su+=a[j][i];
}
}
aux=n; n=m; m=aux;
aux=c; c=l; l=aux;
}
for(j=1;j<=n;j++){
for(k=1;k<=m;k++){
sum[j]+=a[j][k];
}
}
for(i=0;i<=(1<<m)-1;i++){
for(j=m-1;j>=0;j--){
v[j+1]=(i>>j)&1;
}
x=0;
for(j=1;j<=m;j++){
if(v[j]==1)x++;
}
if(x==c){
s2=su;
for(j=1;j<=n;j++){
sum2[j]=sum[j];
}
for(j=1;j<=m;j++){
if(v[j]==1){
for(k=1;k<=n;k++){
s2-=a[k][j];
sum2[k]-=a[k][j];
}
}
}
sort(sum2+1,sum2+n+1,cmp);
for(k=1;k<=l;k++){
s2-=sum2[k];
}
if(s2>Max)Max=s2;
}
}
fclose(f);
FILE *g=fopen("elimin.out","w");
fprintf(g,"%d",Max);
fclose(g);
return 0;
}