Submission #538464

#TimeUsernameProblemLanguageResultExecution timeMemory
538464blueJourney (NOI18_journey)C++17
43 / 100
2 ms408 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; using ll = long long; using pii = pair<int, int>; int main() { int n, m, h; cin >> n >> m >> h; vector<pii> edge[n]; // cerr << "done\n"; for(int i = 0; i < n-1; i++) { for(int e = 0; e < h; e++) { int j, w; cin >> j >> w; if(j <= i) continue; edge[i].push_back({j, w}); } sort(edge[i].begin(), edge[i].end(), [] (pii x, pii y) { return x.second < y.second; }); } ll dp[m][n]; for(int d = 0; d < m; d++) for(int i = 0; i < n; i++) dp[d][i] = 0; dp[0][0] = 1; for(int d = 0; d < m; d++) { for(int i = 0; i < n; i++) { if(d >= 1) { dp[d][i] = dp[d-1][i] + dp[d][i]; } for(pii e : edge[i]) { if(d + e.second >= m) break; dp[d + e.second][e.first] = dp[d + e.second][e.first] + dp[d][i]; } } } cout << dp[0][n-1] << ' '; // for(int d ) for(int d = 1; d < m; d++) cout << min(dp[d][n-1] - dp[d-1][n-1], 5'0000'0001LL) << ' '; cout << '\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...