Submission #45319474


Source Code Expand

#include <bits/stdc++.h>
#define int long long
#define SZ(x) (int) x.size() - 1
#define all(x) x.begin(), x.end()
#define ms(x, y) memset(x, y, sizeof x)
#define F(i, x, y) for (int i = (x); i <= (y); i++)
#define DF(i, x, y) for (int i = (x); i >= (y); i--)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
template <typename T> inline void chkmax(T& x, T y) { x = max(x, y); }
template <typename T> inline void chkmin(T& x, T y) { x = min(x, y); }
template <typename T> inline void read(T &x) {
	x = 0; int f = 1; char c = getchar();
	for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
	for (; isdigit(c); c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48);
	x *= f;
}
const int N = 2e5 + 10;
int x, n, m, w, t, s[N], f[N], sum[N];
pair <int, int> p[N];
vector <pair <int, int>> v[N];
int rt[N];
pair <int, int> seg[N * 30];
int ls[N * 30], rs[N * 30], tot;
__int128 calc(pair <int,int> x, int y) {
	return (__int128) x.first * y + x.second;
}
void ins(int &num, int l, int r, pair <int, int> x) {
	// cout << num << " " << l << " " << r << endl;
	if (!num) {
		num = ++tot;
		seg[num] = x;
		return;
	}
	int mid = (l + r) >> 1;
	if (calc(seg[num], mid) > calc(x, mid)) swap(x, seg[num]);
	if (l == r) return;
	if (calc(seg[num], l) > calc(x, l)) ins(ls[num], l, mid, x);
	if (calc(seg[num], r) > calc(x, r)) ins(rs[num], mid + 1, r, x);
}
int query(int num, int l, int r, int x) {
	if (!num) return 1e18;
	int mid = (l + r) >> 1, ans = seg[num].first * x + seg[num].second;
	if (mid >= x) return min(query(ls[num], l, mid, x), ans);
	return min(query(rs[num], mid + 1, r, x), ans);
}
void add(int x, pair <int, int> y) {
	for (; x; x -= x & -x) ins(rt[x], -1e18, 0, y);
}
int query(int x, int y) {
	int ans = 1e18;
	for (; x <= m; x += x & -x) chkmin(ans, query(rt[x], -1e18, 0, y));
	return ans;
}
signed main() {
	// freopen("coach.in", "r", stdin);
	// freopen("coach.out", "w", stdout);
	read(x), read(n), read(m), read(w), read(t);
	F(i, 1, n) read(s[i]);
	F(i, 1, m) read(p[i].first), read(p[i].second);
	sort(s + 1, s + n + 1);
	s[n + 1] = x;
	sort(p + 1, p + m + 1);
	F(i, 0, n) {
		int l = s[i], r = s[i + 1];
		if (l / t != r / t) {
			r %= t;
			int tr = lower_bound(p + 1, p + m + 1, make_pair(r, (int) 0)) - p - 1;
			// cout << "# " << tr << " " << 1 << " " << s[i + 1] / t << endl;
			v[tr].emplace_back(1, s[i + 1] / t);
		} else {
			l %= t, r %= t;
			int tl = lower_bound(p + 1, p + m + 1, make_pair(l, (int) 0)) - p, tr = lower_bound(p + 1, p + m + 1, make_pair(r, (int) 0)) - p - 1;
			// cout << "$ " << tr << " " << tl << endl;
			v[tr].emplace_back(tl, s[i] / t);
		}
		// cout << l << " " << r << endl;
		// cout << "! " << tl << " " << tr << endl;
	}
	ms(f, 0x3f);
	F(i, 1, m) sum[i] = sum[i - 1] + p[i].second;
	f[0] = (x / t + 1) * w;
	add(1, make_pair(0, f[0]));
	F(i, 1, m) {
		f[i] = f[i - 1] + ((x - p[i].first) / t + 1) * w;
		for (pair <int, int> j: v[i]) chkmin(f[i], query(j.first, -j.second * w) + sum[i] + j.second * w * i);//, cout << "! " << query(j.first, -j.second * w) << " " << sum[i] << " " << j.second * w * i << endl;
		add(i + 1, make_pair(i, f[i] - sum[i]));
		// cout << f[i] << endl;
	}
	cout << f[m] << endl;
	return 0;
}

Submission Info

Submission Time
Task G - 長距離バス (Long Distance Coach)
User ast123
Language C++ 20 (gcc 12.2)
Score 100
Code Size 3299 Byte
Status AC
Exec Time 617 ms
Memory 77960 KiB

Judge Result

Set Name Subtask01 Subtask02 Subtask03 Subtask04
Score / Max Score 16 / 16 30 / 30 25 / 25 29 / 29
Status
AC × 25
AC × 40
AC × 54
AC × 83
Set Name Test Cases
Subtask01 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, sample-01.txt, sample-02.txt, sample-03.txt
Subtask02 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt, 02-15.txt, sample-01.txt, sample-02.txt, sample-03.txt
Subtask03 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt, 02-15.txt, 03-01.txt, 03-02.txt, 03-03.txt, 03-04.txt, 03-05.txt, 03-06.txt, 03-07.txt, 03-08.txt, 03-09.txt, 03-10.txt, 03-11.txt, 03-12.txt, 03-13.txt, 03-14.txt, sample-01.txt, sample-02.txt, sample-03.txt
Subtask04 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt, 02-15.txt, 03-01.txt, 03-02.txt, 03-03.txt, 03-04.txt, 03-05.txt, 03-06.txt, 03-07.txt, 03-08.txt, 03-09.txt, 03-10.txt, 03-11.txt, 03-12.txt, 03-13.txt, 03-14.txt, 04-01.txt, 04-02.txt, 04-03.txt, 04-04.txt, 04-05.txt, 04-06.txt, 04-07.txt, 04-08.txt, 04-09.txt, 04-10.txt, 04-11.txt, 04-12.txt, 04-13.txt, 04-14.txt, 04-15.txt, 04-16.txt, 04-17.txt, 04-18.txt, 04-19.txt, 04-20.txt, 04-21.txt, 04-22.txt, 04-23.txt, 04-24.txt, 04-25.txt, 04-26.txt, 04-27.txt, 04-28.txt, 04-29.txt, sample-01.txt, sample-02.txt, sample-03.txt
Case Name Status Exec Time Memory
01-01.txt AC 2 ms 5040 KiB
01-02.txt AC 2 ms 5084 KiB
01-03.txt AC 2 ms 5084 KiB
01-04.txt AC 2 ms 4960 KiB
01-05.txt AC 2 ms 5088 KiB
01-06.txt AC 2 ms 5048 KiB
01-07.txt AC 2 ms 5084 KiB
01-08.txt AC 2 ms 5044 KiB
01-09.txt AC 2 ms 5080 KiB
01-10.txt AC 2 ms 4960 KiB
01-11.txt AC 2 ms 5020 KiB
01-12.txt AC 2 ms 5236 KiB
01-13.txt AC 2 ms 5048 KiB
01-14.txt AC 2 ms 5040 KiB
01-15.txt AC 2 ms 5020 KiB
01-16.txt AC 2 ms 5028 KiB
01-17.txt AC 2 ms 5028 KiB
01-18.txt AC 2 ms 4960 KiB
01-19.txt AC 2 ms 5032 KiB
01-20.txt AC 2 ms 5044 KiB
01-21.txt AC 2 ms 5080 KiB
01-22.txt AC 2 ms 5236 KiB
02-01.txt AC 2 ms 5056 KiB
02-02.txt AC 2 ms 5044 KiB
02-03.txt AC 2 ms 5056 KiB
02-04.txt AC 2 ms 5160 KiB
02-05.txt AC 3 ms 5092 KiB
02-06.txt AC 2 ms 5056 KiB
02-07.txt AC 2 ms 5244 KiB
02-08.txt AC 2 ms 5044 KiB
02-09.txt AC 2 ms 5076 KiB
02-10.txt AC 2 ms 5084 KiB
02-11.txt AC 2 ms 5152 KiB
02-12.txt AC 2 ms 5244 KiB
02-13.txt AC 2 ms 5168 KiB
02-14.txt AC 2 ms 5092 KiB
02-15.txt AC 2 ms 5048 KiB
03-01.txt AC 4 ms 5324 KiB
03-02.txt AC 5 ms 5520 KiB
03-03.txt AC 4 ms 5384 KiB
03-04.txt AC 5 ms 5520 KiB
03-05.txt AC 5 ms 5360 KiB
03-06.txt AC 5 ms 5332 KiB
03-07.txt AC 5 ms 5348 KiB
03-08.txt AC 5 ms 5292 KiB
03-09.txt AC 6 ms 5604 KiB
03-10.txt AC 3 ms 5296 KiB
03-11.txt AC 4 ms 5364 KiB
03-12.txt AC 4 ms 5416 KiB
03-13.txt AC 4 ms 5364 KiB
03-14.txt AC 4 ms 5316 KiB
04-01.txt AC 355 ms 35960 KiB
04-02.txt AC 308 ms 37892 KiB
04-03.txt AC 581 ms 35840 KiB
04-04.txt AC 584 ms 35064 KiB
04-05.txt AC 469 ms 30572 KiB
04-06.txt AC 450 ms 36532 KiB
04-07.txt AC 155 ms 25892 KiB
04-08.txt AC 589 ms 35168 KiB
04-09.txt AC 606 ms 36140 KiB
04-10.txt AC 582 ms 35096 KiB
04-11.txt AC 564 ms 35416 KiB
04-12.txt AC 617 ms 77960 KiB
04-13.txt AC 429 ms 39852 KiB
04-14.txt AC 363 ms 33668 KiB
04-15.txt AC 146 ms 26908 KiB
04-16.txt AC 538 ms 42680 KiB
04-17.txt AC 446 ms 37432 KiB
04-18.txt AC 461 ms 34888 KiB
04-19.txt AC 445 ms 34744 KiB
04-20.txt AC 441 ms 34732 KiB
04-21.txt AC 448 ms 34688 KiB
04-22.txt AC 407 ms 33456 KiB
04-23.txt AC 264 ms 31344 KiB
04-24.txt AC 192 ms 28828 KiB
04-25.txt AC 159 ms 25924 KiB
04-26.txt AC 378 ms 42200 KiB
04-27.txt AC 249 ms 40844 KiB
04-28.txt AC 343 ms 35980 KiB
04-29.txt AC 358 ms 35940 KiB
sample-01.txt AC 2 ms 5036 KiB
sample-02.txt AC 2 ms 5080 KiB
sample-03.txt AC 2 ms 5028 KiB