QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#294115 | #7622. Yet Another Coffee | sofija6 | WA | 0ms | 12352kb | C++23 | 2.2kb | 2023-12-30 07:50:18 | 2023-12-30 07:50:18 |
Judging History
answer
#include <bits/stdc++.h>
#define ll long long
#define MAXN 200010
using namespace std;
ll n,a[MAXN],r[MAXN],w[MAXN],pref[MAXN],ind[MAXN],ans[MAXN];
struct bit
{
vector<ll> sum;
void Init()
{
sum.resize(MAXN);
fill(sum.begin(),sum.end(),0);
}
void Add(ll pos,ll val)
{
for (ll i=pos;i<MAXN;i+=i&(-i))
sum[i]+=val;
}
ll Calc(ll pos)
{
ll ans=0;
for (ll i=pos;i>0;i-=i&(-i))
ans+=sum[i];
return ans;
}
};
bit C,S;
void Solve(ll L,ll R,ll A,ll B)
{
if (L>R)
return;
ll f,mid=(L+R)/2,minn=LLONG_MAX;
for (ll i=B;i>=A;i--)
{
ll l=1,r=n,midd,anss=-1;
while (l<=r)
{
midd=(l+r)/2;
if (C.Calc(midd)<=mid-1)
{
anss=S.Calc(midd);
l=midd+1;
}
else
r=midd-1;
}
if (anss!=-1 && anss+a[i]-pref[i]<minn)
{
minn=anss+a[i]-pref[i];
f=i;
}
C.Add(ind[i],1);
S.Add(ind[i],a[i]);
}
ans[mid]=minn;
for (ll i=A;i<=f;i++)
{
C.Add(ind[i],-1);
S.Add(ind[i],-a[i]);
}
Solve(mid+1,R,A,f);
for (ll i=f+1;i<=B;i++)
{
C.Add(ind[i],-1);
S.Add(ind[i],-a[i]);
}
Solve(L,mid-1,f,B);
}
int main()
{
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
ll t,m;
cin >> t;
while (t--)
{
cin >> n >> m;
vector<pair<ll,ll> > v;
for (ll i=1;i<=n;i++)
{
cin >> a[i];
v.push_back({a[i],i});
pref[i]=0;
}
pref[n+1]=0;
for (ll i=1;i<=m;i++)
{
cin >> r[i] >> w[i];
pref[r[i]]+=w[i];
}
for (ll i=n;i>0;i--)
pref[i]+=pref[i+1];
C.Init();
S.Init();
sort(v.begin(),v.end());
for (ll i=0;i<n;i++)
ind[v[i].second]=i+1;
Solve(1,n,1,n);
for (ll i=1;i<=n;i++)
cout << ans[i] << " ";
cout << "\n";
}
return 0;
}
详细
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 12352kb
input:
5 10 14 17 37 59 65 53 73 68 177 160 111 10 177 5 193 2 30 3 63 2 339 3 263 5 178 2 190 9 23 10 328 10 200 9 8 3 391 6 230 12 9 152 306 86 88 324 59 18 14 42 260 304 55 3 50 2 170 1 252 7 811 1 713 7 215 10 201 4 926 8 319 19 20 182 74 180 201 326 243 195 31 170 263 284 233 48 166 272 281 179 116 31...
output:
-2596 -2559 -2506 -2447 -2382 -2314 -2241 -2130 -1970 -1793 -506 -3491 -3473 -3431 -3376 -3317 -3231 -3143 -2883 -2579 -2273 -1949 -4500 -6496 -6448 -6374 -6258 -6092 -5922 -5743 -5563 -5368 -5167 -4934 -4691 -4428 -4156 -3875 -3591 -3272 -2946 232 -2987 -2572 -2140 -1707 -1238 -768 -274 243 1046...
result:
wrong answer 11th numbers differ - expected: '-3505', found: '-506'