From 46aaf2822392bc8e807b1fbebab9a66e07559847 Mon Sep 17 00:00:00 2001 From: hanyixuanten <105723997+hanyixuanten@users.noreply.github.com> Date: Sun, 19 Jul 2026 18:29:19 +0800 Subject: [PATCH] new file: P1314.cpp --- P1314.cpp | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 P1314.cpp diff --git a/P1314.cpp b/P1314.cpp new file mode 100644 index 0000000..37834ad --- /dev/null +++ b/P1314.cpp @@ -0,0 +1,72 @@ +#include +#define int long long +using namespace std; +int n, m, s; +struct k +{ + int w, v; +} kuang[200005]; +struct q +{ + int l, r; +} qu[200005]; +int precnt[200005], pre[200005]; +/* +大于W的数量*大于W的v的和 +*/ +int query(int w) +{ + memset(precnt, 0, sizeof precnt); + memset(pre, 0, sizeof pre); + int ans = 0; + for (int i = 1; i <= n; ++i) + { + if (kuang[i].w > w) + pre[i] = pre[i - 1] + kuang[i].v, precnt[i] = precnt[i - 1] + 1; + else + pre[i] = pre[i - 1], precnt[i] = precnt[i - 1]; + } + for (int i = 1; i <= m; ++i) + { + int cnt = precnt[qu[i].r] - precnt[qu[i].l - 1], sumv = pre[qu[i].r] - pre[qu[i].l - 1]; + // for (int j = qu[i].l; j <= qu[i].r; ++j) + // { + // if (kuang[j].w > w) + // cnt++, sumv += kuang[j].v; + // } + ans += cnt * sumv; + } + return ans - s; +} +signed main() +{ + scanf("%lld%lld%lld", &n, &m, &s); + int maxwj = 0; + for (int i = 1; i <= n; ++i) + { + scanf("%lld%lld", &kuang[i].w, &kuang[i].v); + maxwj = max(maxwj, kuang[i].w); + } + for (int i = 1; i <= m; ++i) + scanf("%lld%lld", &qu[i].l, &qu[i].r); + int l = 0, r = LONG_LONG_MAX, mid; + int ans = LONG_LONG_MAX; + while (l <= r) + { + mid = (l + r) / 2; + if (query(mid) < 0) + r = mid - 1; + else + l = mid + 1; + ans = min(abs(query(mid)), ans); + } + printf("%lld\n", ans); + /* + int mina = INT_MAX; + for (int i = 0; i <= r; ++i) + { + mina = min(mina, abs(query(i))); + } + printf("%d\n", mina);*/ + return 0; +} \ No newline at end of file