Submission #25549776


Source Code Expand

#include <algorithm>
#include <cassert>
#include <iostream>
#include <map>
#include <vector>
using namespace std;
using ll=long long;
using pp=pair<int,int>;
const int maxn = int(2e5) + 10;

int n;
int a[maxn];

map<pp,int> gnum; int gn;

struct Sparse {
	pp tx[20][maxn];

	void build() {
		for (int i=1; i<=n; ++i) tx[0][i] = {a[i], i};
		for (int i=1; i<=19; ++i) for (int j=1; j<=n; ++j) {
			tx[i][j] = tx[i-1][j];
			if (j+(1<<(i-1)) <= n) {
				tx[i][j] = max(tx[i][j], tx[i-1][j+(1<<(i-1))]);
			}
		}
	}

	int maxi(int l, int r) {
		int w = r-l+1;
		for (int i=0;;++i) if (2*(1<<i) >= w) {
			return max(tx[i][l], tx[i][r-(1<<i)+1]).second;
		}
	}

	int wrap_v(int x, int y) {
		int l = x, r = x;
		for (int i=19; 0<=i; --i) {
			int tl = l - (1<<i);
			if (1 <= tl && tx[i][tl].first < y) l = tl;
			int tr = r + (1<<i);
			if (tr <= n && tx[i][r+1].first < y) r = tr;
		}
		return gnum[{l, r}];
	}
} tree;

vector<int> te[maxn];
int root;
vector<pp> paths[maxn];
int gdfs(int l, int r) {
	int me = ++gn; gnum[{l, r}] = me;
	if (l == r) return me;
	int i = tree.maxi(l, r);
	if (l < i) te[me].push_back(gdfs(l, i-1));
	if (i < r) te[me].push_back(gdfs(i+1, r));
	return me;
}

int tin[maxn], tout[maxn], nt;
void tdfs1(int x) {
	tin[x] = ++nt; for (int y : te[x]) tdfs1(y); tout[x] = nt;
}

ll dp[maxn];
struct It {
	const static int M = 262144;
	ll t[M<<1];
	void upd(int l, int r, ll v) {
		for (l+=M, r+=M; l<=r; l/=2, r/=2) {
			if (l%2==1) t[l++] += v;
			if (r%2==0) t[r--] += v;
		}
	}
	ll get(int p) { ll ret = 0;
		for (p+=M; p; p/=2) ret += t[p];
		return ret;
	}
} giveup;

void tdfs2(int x) {
	ll cds = 0;
	for (int y:te[x]) tdfs2(y), cds += dp[y];
	ll mdf = 0;
	for (auto &tmp:paths[x]) {
		int to, c; tie(to, c) = tmp;
		mdf = max(mdf, c + giveup.get(tin[to]));
	}
	dp[x] = cds + mdf;
	giveup.upd(tin[x], tout[x], -mdf);
}

int main() { cin.tie(0)->sync_with_stdio(0);
	cin >> n; for (int i=1; i<=n; ++i) cin >> a[i];
	tree.build();

	ll csum = 0;
	root = gdfs(1, n);
	{ int m; cin >> m;
	for (;m--;) {
		int x, y, c; cin >> x >> y >> c; csum += c;
		int up = tree.wrap_v(x, y), down = tree.wrap_v(x, a[x]+1);
		paths[up].push_back({down, c});
	} }

	tdfs1(root);
	tdfs2(root);

	ll ans = csum - dp[root];
	cout << ans << '\n';

	return 0;
}

Submission Info

Submission Time
Task G - 星座 3 (Constellation 3)
User Namnamseo
Language C++ (GCC 9.2.1)
Score 100
Code Size 2379 Byte
Status AC
Exec Time 763 ms
Memory 88760 KiB

Judge Result

Set Name Subtask 1 Subtask 2 Subtask 3
Score / Max Score 14 / 14 21 / 21 65 / 65
Status
AC × 25
AC × 47
AC × 69
Set Name Test Cases
Subtask 1 sample-01.txt, sample-02.txt, sample-03.txt, 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
Subtask 2 sample-01.txt, sample-02.txt, sample-03.txt, 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, 02-16.txt, 02-17.txt, 02-18.txt, 02-19.txt, 02-20.txt, 02-21.txt, 02-22.txt
Subtask 3 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, 02-16.txt, 02-17.txt, 02-18.txt, 02-19.txt, 02-20.txt, 02-21.txt, 02-22.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, 03-15.txt, 03-16.txt, 03-17.txt, 03-18.txt, 03-19.txt, 03-20.txt, 03-21.txt, 03-22.txt, sample-01.txt, sample-02.txt, sample-03.txt
Case Name Status Exec Time Memory
01-01.txt AC 15 ms 13116 KiB
01-02.txt AC 13 ms 13144 KiB
01-03.txt AC 12 ms 13048 KiB
01-04.txt AC 13 ms 13116 KiB
01-05.txt AC 13 ms 13228 KiB
01-06.txt AC 14 ms 13176 KiB
01-07.txt AC 12 ms 13224 KiB
01-08.txt AC 12 ms 13108 KiB
01-09.txt AC 14 ms 13180 KiB
01-10.txt AC 13 ms 13160 KiB
01-11.txt AC 13 ms 13104 KiB
01-12.txt AC 12 ms 13184 KiB
01-13.txt AC 19 ms 13112 KiB
01-14.txt AC 12 ms 13052 KiB
01-15.txt AC 12 ms 13116 KiB
01-16.txt AC 17 ms 13208 KiB
01-17.txt AC 10 ms 13112 KiB
01-18.txt AC 12 ms 13244 KiB
01-19.txt AC 15 ms 13184 KiB
01-20.txt AC 11 ms 13108 KiB
01-21.txt AC 12 ms 13136 KiB
01-22.txt AC 12 ms 13212 KiB
02-01.txt AC 13 ms 13592 KiB
02-02.txt AC 14 ms 13660 KiB
02-03.txt AC 16 ms 13596 KiB
02-04.txt AC 15 ms 13684 KiB
02-05.txt AC 14 ms 13632 KiB
02-06.txt AC 16 ms 13660 KiB
02-07.txt AC 18 ms 13668 KiB
02-08.txt AC 14 ms 13676 KiB
02-09.txt AC 17 ms 13668 KiB
02-10.txt AC 19 ms 13820 KiB
02-11.txt AC 16 ms 13672 KiB
02-12.txt AC 19 ms 13716 KiB
02-13.txt AC 18 ms 13644 KiB
02-14.txt AC 24 ms 13724 KiB
02-15.txt AC 15 ms 13836 KiB
02-16.txt AC 19 ms 13856 KiB
02-17.txt AC 15 ms 13652 KiB
02-18.txt AC 16 ms 13712 KiB
02-19.txt AC 14 ms 13684 KiB
02-20.txt AC 14 ms 13648 KiB
02-21.txt AC 16 ms 13788 KiB
02-22.txt AC 19 ms 13608 KiB
03-01.txt AC 551 ms 71228 KiB
03-02.txt AC 532 ms 70520 KiB
03-03.txt AC 518 ms 69612 KiB
03-04.txt AC 529 ms 71304 KiB
03-05.txt AC 522 ms 69236 KiB
03-06.txt AC 517 ms 69312 KiB
03-07.txt AC 540 ms 69460 KiB
03-08.txt AC 578 ms 70632 KiB
03-09.txt AC 557 ms 70688 KiB
03-10.txt AC 763 ms 81460 KiB
03-11.txt AC 724 ms 76900 KiB
03-12.txt AC 737 ms 74872 KiB
03-13.txt AC 652 ms 73108 KiB
03-14.txt AC 507 ms 77172 KiB
03-15.txt AC 500 ms 76760 KiB
03-16.txt AC 260 ms 88760 KiB
03-17.txt AC 548 ms 70820 KiB
03-18.txt AC 688 ms 81708 KiB
03-19.txt AC 531 ms 69660 KiB
03-20.txt AC 548 ms 68800 KiB
03-21.txt AC 687 ms 82780 KiB
03-22.txt AC 587 ms 69056 KiB
sample-01.txt AC 17 ms 13008 KiB
sample-02.txt AC 14 ms 13012 KiB
sample-03.txt AC 13 ms 13064 KiB