QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#575777#7523. Partially Free Mealucup-team2818#WA 363ms84236kbC++141.6kb2024-09-19 16:44:482024-09-19 16:44:48

Judging History

This is the latest submission verdict.

  • [2024-09-19 16:44:48]
  • Judged
  • Verdict: WA
  • Time: 363ms
  • Memory: 84236kb
  • [2024-09-19 16:44:48]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;

const int N = 2e5 + 5;

int n, tot, rt[N], ls[N * 20], rs[N * 20], cnt[N * 20];
long long sum[N * 20], ans[N];

struct A {
	int a, b, id;
} p[N];

bool cmpa(A x, A y) {
	return x.a < y.a;
}

bool cmpb(A x, A y) {
	return x.b < y.b;
}

void modify(int &p, int q, int l, int r, int x, int v) {
	p = ++tot;
	cnt[p] = cnt[q] + 1;
	sum[p] = sum[q] + v;
	ls[p] = ls[q];
	rs[p] = rs[q];
	if (l == r) {
		return;
	}
	int mid = l + r >> 1;
	if (x <= mid) {
		modify(ls[p], ls[q], l, mid, x, v);
	} else {
		modify(rs[p], rs[q], mid + 1, r, x, v);
	}
}

long long query(int p, int l, int r, int k) {
	if (l == r) {
		return sum[p];
	}
	int mid = l + r >> 1;
	if (cnt[ls[p]] >= k) {
		return query(ls[p], l, mid, k);
	} else {
		return sum[ls[p]] + query(rs[p], mid + 1, r, k - cnt[ls[p]]);
	}
}

void solve(int l, int r, int ql, int qr) {
	int mid = l + r >> 1, k = -1;
	for (int j = max(mid, ql); j <= qr; j++) {
		int val = query(rt[j], 1, n, mid) + p[j].b;
		if (k == -1 || val < ans[mid]) {
			k = j;
			ans[mid] = val;
		}
	}
	if (l < mid) {
		solve(l, mid - 1, ql, k);
	}
	if (r > mid) {
		solve(mid + 1, r, k, qr);
	}
}

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> p[i].a >> p[i].b;
	}
	sort(p + 1, p + n + 1, cmpa);
	for (int i = 1; i <= n; i++) {
		p[i].id = i;
	}
	sort(p + 1, p + n + 1, cmpb);
	for (int i = 1; i <= n; i++) {
		modify(rt[i], rt[i - 1], 1, n, p[i].id, p[i].a);
	}
	solve(1, n, 1, n);
	for (int i = 1; i <= n; i++) {
		cout << ans[i] << '\n';
	}

	return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 3780kb

input:

3
2 5
4 3
3 7

output:

7
11
16

result:

ok 3 lines

Test #2:

score: -100
Wrong Answer
time: 363ms
memory: 84236kb

input:

200000
466436993 804989151
660995237 756645598
432103296 703610564
6889895 53276988
873617076 822481192
532911431 126844295
623111499 456772252
937464699 762157133
708503076 786039753
78556972 5436013
582960979 398984169
786333369 325119902
930705057 615928139
924915828 506145001
164984329 208212435...

output:

7131603
199412501
472546668
822642037
1470093901
-2006118473
-1999885459
-1858028972
-1507003532
-1604804894
-2108901488
-1862562255
-2000686265
-1975547702
-1887329288
-2101503281
-2128208538
-2109615271
-2108466156
-2138244721
-1997657005
-2116267810
-2055462072
-2113623977
-2038375143
-2128494159...

result:

wrong answer 1st lines differ - expected: '1318594', found: '7131603'