# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1169553 | nathan4690 | Topical (NOI23_topical) | C++20 | 353 ms | 146736 KiB |
#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define f1(i,n) for(int i=1;i<=n;i++)
#define __file_name ""
using namespace std;
const ll maxn=1e6+5, inf=1e18;
int n, k, ptr[maxn], rem[maxn];
ll val[maxn];
int ans;
vector<vector<int>> r, u;
vector<pair<int,int>> allc[maxn];
queue<int> qu;
void upd(){
f1(i,k){
while(ptr[i] < allc[i].size()){
if(val[i] >= allc[i][ptr[i]].first){
int idx = allc[i][ptr[i]].second;
rem[idx]--;
if(rem[idx] == 0) qu.push(idx);
ptr[i]++;
}else break;
}
}
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
if(fopen(__file_name ".inp", "r")){
freopen(__file_name ".inp", "r", stdin);
freopen(__file_name ".out", "w", stdout);
}
// code here
cin >> n >> k;
r.resize(n+1, vector<int>(k+1));
u.resize(n+1, vector<int>(k+1));
f1(i, n) f1(j, k) {
cin >> r[i][j];
allc[j].push_back({r[i][j], i});
}
f1(i,n) f1(j,k) cin >> u[i][j];
f1(i,k) sort(allc[i].begin(), allc[i].end());
f1(i,n) rem[i] = k;
upd();
while(!qu.empty()){
int idx = qu.front();
qu.pop();
ans++;
f1(i,k) val[i] += u[idx][i];
upd();
}
cout << ans;
return 0;
}
Compilation message (stderr)
# | 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... |