제출 #1262325

#제출 시각아이디문제언어결과실행 시간메모리
1262325PlayVoltzSemiexpress (JOI17_semiexpress)C++20
100 / 100
1 ms328 KiB
#include <cstdio> #include <stdio.h> #include <stdbool.h> #include <iostream> #include <map> #include <vector> #include <climits> #include <stack> #include <string> #include <queue> #include <algorithm> #include <set> #include <unordered_set> #include <unordered_map> #include <cmath> #include <cctype> #include <bitset> #include <iomanip> #include <cstring> #include <numeric> #include <cassert> #include <random> #include <chrono> #include <fstream> using namespace std; #define int long long #define pii pair<int, int> #define mp make_pair #define pb push_back #define fi first #define se second int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m, k, a, b, c, t; cin>>n>>m>>k>>a>>b>>c>>t, k-=m; vector<int> vect(m+1), reach(m, 0); priority_queue<pii> pq; vect[m]=n+1; for (int i=0; i<m; ++i)cin>>vect[i]; for (int i=0; i<m; ++i){ if ((vect[i]-1)*b<=t){ reach[i]=min(1+(t-(vect[i]-1)*b)/a, vect[i+1]-vect[i]); if ((vect[i]-1)*b+reach[i]*c<=t)pq.push(mp(min(1+(t-(vect[i]-1)*b-reach[i]*c)/a, vect[i+1]-vect[i]-reach[i]), i)); } } while (pq.size()&&k){ --k; pii cc=pq.top(); pq.pop(); reach[cc.se]+=cc.fi; int i=cc.se; if ((vect[i]-1)*b+reach[i]*c<=t)pq.push(mp(min(1+(t-(vect[i]-1)*b-reach[i]*c)/a, vect[i+1]-vect[i]-reach[i]), i)); } cout<<accumulate(reach.begin(), reach.end(), -1); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...