#include <bits/stdc++.h>
#define int long long
using namespace std;
int z[200005], cutoff[200005], jumps[200005];
vector<pair<int, int> > vec;
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, q, a, b, d;
cin >> n >> q >> d >> a >> b;
vec.push_back({-1e18, -1});
for (int i=1; i<=n; i++)
{
int l, r;
cin >> l >> r;
vec.push_back({l, r});
}
vec.push_back({1e18, 2e18});
for (int i=1; i<=q; i++)
cin >> z[i];
sort(z+1, z+q+1);
if (a*d<=b)
{
for (int i=2; i<=n+1; i++)
{
int ind=lower_bound(vec.begin(), vec.end(), make_pair(vec[i-1].second-d+2, 0LL))-vec.begin();
if (ind==i)
cutoff[i]=1e18;
else
{
cutoff[i]=max(vec[i-1].second+1, cutoff[ind]+d);
jumps[i]=jumps[ind]+1;
}
}
int ind=1;
for (int i=1; i<=q; i++)
{
while (vec[ind].first<=z[i])
ind++;
if (z[i]<cutoff[ind])
cout << -1 << '\n';
else
cout << jumps[ind]*b+(z[i]-jumps[ind]*d)*a << '\n';
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |