제출 #1281307

#제출 시각아이디문제언어결과실행 시간메모리
1281307AMnuTopical (NOI23_topical)C++20
100 / 100
232 ms28144 KiB
#include <bits/stdc++.h> #define fi first #define se second using namespace std; typedef long long ll; typedef pair<int,int> pii; int N, K, ans; queue <int> Q; int main () { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> N >> K; pii R[K][N]; int U[N+1][K]; ll skill[K]; int point[K], done[N]; memset(skill,0,sizeof(skill)); memset(point,0,sizeof(point)); memset(done,0,sizeof(done)); for (int i=0;i<N;i++) { for (int j=0;j<K;j++) { cin >> R[j][i].fi; R[j][i].se = i; } } for (int i=0;i<N;i++) { for (int j=0;j<K;j++) { cin >> U[i][j]; } } for (int i=0;i<K;i++) { sort(R[i],R[i]+N); U[N][i] = 0; } queue <int> Q; Q.push(N); while (!Q.empty()) { int x = Q.front(); Q.pop(); for (int i=0;i<K;i++) { skill[i] += U[x][i]; while (point[i] < N && R[i][point[i]].fi <= skill[i]) { done[R[i][point[i]].se]++; if (done[R[i][point[i]].se] == K) { Q.push(R[i][point[i]].se); ans++; } point[i]++; } } } 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...