제출 #1281302

#제출 시각아이디문제언어결과실행 시간메모리
1281302hynmjTopical (NOI23_topical)C++20
100 / 100
317 ms77664 KiB
#include <bits/stdc++.h> #define fi first #define se second using namespace std; typedef long long ll; typedef pair<int,int> pii; const int MAXN = 1e6+1, MOD = 1e9+7; int N, A; ll ans, dp[20]; vector <int> prime[MAXN]; vector <pii> power[MAXN]; int main () { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll n, k, ans = 0; cin >> n >> k; vector<vector<pair<int,int>>> topics(k, vector<pair<int,int>> (n)); vector<vector<int>> w(n, vector<int>(k)); for(int i = 0; i <n; i++){ for(int j = 0; j < k; j++){ cin >> topics[j][i].first; topics[j][i].second = i; } } for(int i = 0; i <n; i++){ for(int j = 0; j < k; j++){ cin >> w[i][j]; } } for(int i = 0 ;i < k; i++){ sort(topics[i].begin(), topics[i].end()); } vector<ll> cnt(n), sz(k), track(k), tmp; while(1){ for(int i = 0; i< k; i++){ while(track[i] < n and sz[i] >= topics[i][track[i]].first){ cnt[topics[i][track[i]].second]++; track[i]++; if(cnt[topics[i][track[i] - 1].second] == k){ tmp.push_back(topics[i][track[i] - 1].second); } } } if(tmp.empty()){// can't further process break; } else{ for(auto i : tmp){ for(int j = 0; j < k; j ++){ sz[j] += w[i][j]; } ans++; } tmp.clear(); } } cout << ans << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...