Submission #1314879

#TimeUsernameProblemLanguageResultExecution timeMemory
1314879thaibaotran555Topical (NOI23_topical)C++20
61 / 100
1095 ms39716 KiB
///TRAN THAI BAO :3 #include <iostream> #include <cstdio> #include <algorithm> #include <queue> #include <vector> using namespace std; typedef vector<long long> vi; typedef pair<long long, long long> pii; #define maxN 1000007 int n, k; vector<vi>u; vector<vi>r; long long q[maxN] = {0}; bool used[maxN] = {false}; pii ur3[maxN]; void readData() { vi emp; for(int i = 0; i <= k; i++) emp.push_back(0); for(int i = 0; i <= n; i++) { u.push_back(emp); r.push_back(emp); } 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]; } bool checkCourse(int x) { int ans = 0; for(int i = 1; i <= k; i++) if(q[i] >= r[x][i]) ans++; return ans==k; } void sub1() { readData(); if(checkCourse(1)) { cout << 1; return; } cout << 0; } void sub2() { readData(); int nxt = 1, ans = 0; while(nxt != -1) { nxt = -1; for(int i = 1; i <= n; i++) { if(used[i]) continue; if(checkCourse(i)) { nxt = i; break; } } if(nxt != -1) { used[nxt] = true; for(int i = 1; i <= k; i++) q[i] += u[nxt][i]; ans++; } } cout << ans; } void sub3() { for(int i = 1; i <= n; i++) cin >> ur3[i].first; for(int i = 1; i <= n; i++) cin >> ur3[i].second; sort(ur3+1, ur3+n+1); long long curQ = 0; int ans = 0; for(int i = 1; i <= n; i++) { if(ur3[i].first <= curQ) { ans++; curQ += ur3[i].second; } else break; } cout << ans; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> k; if(n == 1) sub1(); else if(k == 1) sub3(); else sub2(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...