Pagini recente » Cod sursa (job #2112653) | Cod sursa (job #1162972) | Cod sursa (job #1707891) | Cod sursa (job #1248485) | Cod sursa (job #970676)
Cod sursa(job #970676)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream f("elimin.in");
ofstream g("elimin.out");
vector <int> a[7294];
vector <int> b[7294];
struct vec
{int sum; int ind;} ;
vec sl[7300],sc[7300];
int n,m,r,c,sol=0,sol1=0,sol2=0;
bool comp(vec x,vec y)
{
return x.sum<y.sum;
}
void Read()
{ int i,j,el;
f>>n>>m>>r>>c;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{f>>el; sol+=el;
a[i].push_back(el);
sl[i].sum+=el; ;
sc[j].sum+=el;
}
for(i=1;i<=n;i++) sl[i].ind=i;
for(j=1;j<=m;j++) sc[j].ind=j;
}
void Reset()
{ int i,j;
for(i=1;i<=n;i++) sl[i].sum=0;
for(j=1;j<=m;j++) sc[j].sum=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{sl[i].sum+=a[i][j-1];
sc[j].sum+=a[i][j-1];
}
for(i=1;i<=n;i++) sl[i].ind=i;
for(j=1;j<=m;j++) sc[j].ind=j;
}
void Solve1()
{ int i,j;
sort(sl+1,sl+n+1,comp);
for(i=1;i<=r;i++)
{for(j=1;j<=m;j++)
sc[j].sum-=a[sl[i].ind][j-1];
sol1-=sl[i].sum;
}
sort(sc+1,sc+m+1,comp);
for(i=1;i<=c;i++)
sol1-=sc[i].sum;
//g<<sol1;
}
void Solve2()
{ int i,j;
sort(sc+1,sc+m+1,comp);
cout<<sc[1].sum;
for(i=1;i<=n;i++)
for(j=1;j<=c;j++)
sl[i].sum-=a[i][sc[j].ind-1];
for(j=1;j<=c;j++)
sol2-=sc[j].sum;
sort(sl+1,sl+n+1,comp);
for(i=1;i<=r;i++)
sol2-=sl[i].sum;
//g<<"\n"<<sol2;
}
int main()
{ Read();
sol1=sol; sol2=sol;
Solve1();
Reset();
Solve2();
g<<max(sol1,sol2);
return 0;
}