Submission #1181071

#TimeUsernameProblemLanguageResultExecution timeMemory
1181071nekolieSemiexpress (JOI17_semiexpress)C++20
100 / 100
0 ms328 KiB
#include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,m,k; cin >> n >> m >> k; long long A, B, C, T, odp = 0; cin >> A >> B >> C >> T; int s[m]; for (int i = 0; i < m; i++) cin >> s[i]; priority_queue<tuple<long long,long long,int,int>> q; for (int i = 1; i < m; i++) { long long d = B*(s[i-1]-1); if (d > T) continue; long long ile = min((T-d)/A + 1, 1ll*(s[i]-s[i-1])); odp += ile, d += C*ile; if (s[i-1]+ile < 1ll*s[i] && d <= T) q.push({min((T-d)/A+1,s[i]-s[i-1]-ile),d,s[i-1]+ile,i}); } for (int i = 0; i < k-m && !q.empty(); i++) { long long ile = get<0>(q.top()), d = get<1>(q.top()); int ind = get<2>(q.top()), j = get<3>(q.top()); odp += ile, d += C*ile, ind += ile, q.pop(); if (ind < s[j] && d <= T) q.push({min((T-d)/A+1,1ll*(s[j]-ind)),d,ind,j}); } odp--; if (B*(s[m-1]-1) <= T) odp++; cout << odp << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...