#include <bits/stdc++.h>
using namespace std; 
using ll = long long; 
const int N = 1e6 + 5, mod = 1e9 + 7;
int n, k, ans;
vector<vector<int>> u,r;
ll p[N];
struct cmp {
	bool operator()(int x, int y) const {
		if(r[x][1] != r[y][1]) return r[x][1] < r[y][1];
		return x < y;
	}
};
int main() { 
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);	
	cin >> n >> k;
	u.resize(n+1, vector<int> (k+1)), r.resize(n+1, vector<int> (k+1));
	
	for(int i=1;i<=n;++i) {
		for(int j=1;j<=k;++j) cin >> r[i][j];
	}
	for(int i=1;i<=n;++i) {
		for(int j=1;j<=k;++j) cin >> u[i][j];
	}
	
	set <int, cmp> s;
	for(int i=1;i<=n;++i) s.insert(i);
	
	while(!s.empty()) {
		int del = 0;
		for(int id : s) {
			if(p[1] < r[id][1]) break;
			bool ok = 1;
			for(int i=1;i<=k;++i) if(r[id][i] > p[i]) { ok = 0; break; }
			if(!ok) continue;
			for(int i=1;i<=k;++i) p[i] += u[id][i];
			ans++;
			del = id;
			break;
		}
	
		if(del == 0) break;
		s.erase(del);
	}
	cout << ans;
 	return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |