Pagini recente » Cod sursa (job #2954850) | Cod sursa (job #1140417) | Cod sursa (job #1138265) | Cod sursa (job #2754640) | Cod sursa (job #654071)
Cod sursa(job #654071)
#include <fstream>
#include <algorithm>
#include <cstdlib>
#include <ctime>
#define el 700
using namespace std;
ifstream f("elimin.in");
ofstream g("elimin.out");
int n,m,l,c,i,j,es,s,col[el],a[el][el],coli[el],smax,t,v[el],poz,lin[el],lini[el];
int main()
{
f>>n>>m>>l>>c;
for(i=1; i<=n; i++)
for(j=1; j<=m; j++) f>>a[i][j];
for(i=1; i<=n; i++)
for(j=1; j<=m; j++) coli[j]+=a[i][j],lini[i]+=a[i][j];
srand(time(0));
if (l<c)
for(t=1; t<=100000; t++) {
for(i=1; i<=m; i++) col[i]=coli[i];
for(i=1; i<=n; i++) v[i]=0;
for(poz=rand()%n+1; s<l; poz=rand()%n+1)
if (v[poz]==0) v[poz]=1,s++;
for(i=1; i<=n; i++)
if (v[i]==1) for(j=1; j<=m; j++) col[j]=col[j]-a[i][j];
sort (col+1,col+n+1);
for(i=c+1; i<=m; i++)
es+=col[i];
smax=max(smax,es),es=0,s=0;
}
else
{
for(t=1; t<=100000; t++) {
for(i=1; i<=n; i++) lin[i]=lini[i];
for(i=1; i<=m; i++) v[i]=0;
for(poz=rand()%m+1; s<c; poz=rand()%m+1)
if (v[poz]==0) v[poz]=1,s++;
for(i=1; i<=m; i++)
if (v[i]==1) for(j=1; j<=n; j++) lin[j]=lin[j]-a[j][i];
sort (lin+1,lin+n+1);
for(i=c+1; i<=n; i++)
es+=lin[i];
smax=max(smax,es),es=0,s=0;
}
}
g<<smax<<'\n';
f.close();
g.close();
return 0;
}