제출 #1286433

#제출 시각아이디문제언어결과실행 시간메모리
1286433lucianTopical (NOI23_topical)C++17
40 / 100
103 ms12152 KiB
#include <bits/stdc++.h>
using namespace std;

int n, k;
int r[1005][1005]; 
int u[1005][1005];

bool cmp(int a, int b){
	long long sa = 0, sb = 0;
	for(int j = 0; j < k; j++){
		sa += r[a][j];
		sb += r[b][j];
	}
	return sa < sb;
}

signed main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	cin >> n >> k;
	int p[k + 1] = {0};
	bool done[n + 1] = {false};
	int id[n + 1];

	for(int i = 0; i < n; i++){
		for(int j = 0; j < k; j++){
			cin >> r[i][j];
		}
	}
	for(int i = 0; i < n; i++){
		for(int j = 0; j < k; j++){
			cin >> u[i][j];
		}
	}

	for(int i = 0; i < n; i++) id[i] = i;
	sort(id, id + n, cmp);

	int completed = 0;
	bool progress = true;
	while(progress){
		progress = false;
		for(int ii = 0; ii < n; ii++){
			int i = id[ii];
			if(done[i]) continue;
			bool can = true;
			for(int j = 0; j < k; j++){
				if(p[j] < r[i][j]){
					can = false;
					break;
				}
			}
			if(can){
				done[i] = true;
				completed++;
				progress = true;
				for(int j = 0; j < k; j++){
					p[j] += u[i][j];
					if(p[j] > 1000000000){
						p[j] = 1000000000;
					}
				}
			}
		}
	}

	cout << completed;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...