Cod sursa(job #2442095)

Utilizator Narcis09Grecu Narcis Narcis09 Data 22 iulie 2019 17:47:44
Problema Elimin Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
using namespace std;
ifstream cin("elimin.in");
ofstream cout("elimin.out");
struct s{
	long suma, ord;
};

int a[1001][1001];
void sort(int n, s a[]){
	int i, j;
	for (i=1;i<n;i++)
		for (j=i+1;j<=n;j++)
			if (a[i].suma>a[j].suma){
				swap(a[i].suma, a[j].suma);
				swap(a[i].ord, a[j].ord);
			}
}
int main()
{
	int n, m, i, j, r , q;
	long s=0;
	struct s l[1001], c[1001];
	cin>>n>>m>>r>>q;
	for (i=1;i<=n;i++){
		for (j=1;j<=m;j++){
			cin>>a[i][j];
			l[i].suma+=a[i][j];
			c[j].suma+=a[i][j];
			c[j].ord=j;
			s=s+a[i][j];
		}
		l[i].ord=i;
	}
	sort(n, l);
	sort(m, c);
	i=1; j=1;
	while (r>0&&q>0){
		if (l[i].suma<l[j].suma){
			s-=l[i].suma;
			for (int k=1;k<=m;k++)
				c[k].suma-=a[l[i].ord][k];
			i++;
			r--;
			sort(m,c);
		}
		else{
				s-=c[j].suma;
			for (int k=1;k<=n;k++)
				l[k].suma-=a[k][c[j].ord];
			j++;
			q--;
			sort(n,l);
		}
	}
	i=1;
	while (q>0){
		s=s-c[i].suma;
		i++;
		q--;
	}
	i=1;
	while (r>0){
		s=s-l[i].suma;
		i++;
		r--;
	}
	
	cout<<s;
	cin.close();
	cout.close();
	return 0;
}