Submission #755527

#TimeUsernameProblemLanguageResultExecution timeMemory
755527PixelCatSemiexpress (JOI17_semiexpress)C++14
100 / 100
10 ms5440 KiB
#include <bits/stdc++.h> #define For(i, a, b) for(int i = a; i <= b; i++) #define Forr(i, a, b) for(int i = a; i >= b; i--) #define F first #define S second #define all(x) x.begin(), x.end() #define sz(x) ((int)x.size()) #define eb emplace_back #define int LL using namespace std; using LL = long long; using pii = pair<int, int>; int32_t main() { ios::sync_with_stdio(false); cin.tie(0); // =^-w-^= int n, m, k; cin >> n >> m >> k; k -= m; int A, B, C; cin >> A >> B >> C; int T; cin >> T; vector<int> ve(m); // express for(auto &i:ve) { cin >> i; i--; } ve.eb(n); vector<vector<int>> val(m); For(i, 0, m - 1) { int ptr = ve[i]; For(k2, 0, k) { int rem = T - B * ve[i] - C * (ptr - ve[i]); if(rem < 0) break; int ptr2 = min(ve[i + 1] - 1, ptr + rem / A); if(ptr2 < ptr) break; val[i].eb(ptr2 - ptr + 1); ptr = ptr2 + 1; } } vector<int> cur(m, 1); int ans = 0; For(i, 0, m - 1) { if(sz(val[i])) ans += val[i][0]; } while(k--) { int mx = -1, mxi = -1; For(i, 0, m - 1) { if(cur[i] < sz(val[i]) && val[i][cur[i]] > mx) { mx = val[i][cur[i]]; mxi = i; } } if(mx < 0) break; ans += mx; cur[mxi]++; } cout << ans - 1 << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...