Submission #1693085
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=300010;
int n,m,t[N],q[N];
LL a[N],sum[N],l[N],r[N],f[N];
void calc(LL *f)
{
LL sum=0;
for (int i=1,top=0,pos=0; i<=n; i++)
{
sum+=t[i],pos=min(pos+1,top);
while ((pos)&&(a[q[pos]]-1LL*q[pos]*i<a[q[pos-1]]-1LL*q[pos-1]*i)) pos--;
f[i]=max(f[i-1],a[q[pos]]-1LL*q[pos]*i+1LL*i*(i+1)/2-sum);
a[i]=f[i]+1LL*i*(i-1)/2+sum;
while ((top)&&((a[i]-a[q[top]])*(q[top]-q[top-1])-(a[q[top]]-a[q[top-1]])*(i-q[top])>=0)) top--;
q[++top]=i;
}
}
void solve(int L,int R,int ty)
{
if (L==R) {f[L]=max(f[L],l[L-1]+r[L+1]+1-t[L]); return;}
int mid=(L+R-ty)>>1,top=0; LL mx=-1LL<<60;
solve(L,mid,ty),solve(mid+1,R,ty);
for (int i=L-1; i<=mid; i++)
{
a[i]=l[i]+sum[i]+1LL*i*(i-1)/2;
while ((top>1)&&((a[i]-a[q[top]])*(q[top]-q[top-1])-(a[q[top]]-a[q[top-1]])*(i-q[top])>=0)) top--;
q[++top]=i;
}
for (int i=R,pos=1; i>mid; i--)
{
while ((pos<top)&&(a[q[pos]]-1LL*q[pos]*i<a[q[pos+1]]-1LL*q[pos+1]*i)) pos++;
mx=max(mx,a[q[pos]]-1LL*q[pos]*i+1LL*i*(i+1)/2-sum[i]+r[i+1]);
f[i]=max(f[i],mx);
}
}
void work()
{
scanf("%d",&n);
for (int i=1; i<=n; i++) scanf("%d",&t[i]),f[i]=-1LL<<60;
calc(l),reverse(t+1,t+n+1);
calc(r),reverse(t+1,t+n+1),reverse(r+1,r+n+1);
for (int i=1; i<=n; i++) sum[i]=sum[i-1]+t[i];
solve(1,n,0);
reverse(t+1,t+n+1),reverse(f+1,f+n+1);
reverse(l+1,l+n+1),reverse(r+1,r+n+1),swap(l,r);
for (int i=1; i<=n; i++) sum[i]=sum[i-1]+t[i];
solve(1,n,1);
reverse(t+1,t+n+1),reverse(f+1,f+n+1);
swap(l,r),reverse(l+1,l+n+1),reverse(r+1,r+n+1);
scanf("%d",&m);
for (int i=1,p,x; i<=m; i++)
scanf("%d %d",&p,&x),printf("%lld\n",max(l[p-1]+r[p+1],f[p]+t[p]-x));
}
int main()
{
work();
return 0;
}
Submission Info
Submission Time |
|
Task |
F - Contest with Drinks Hard |
User |
YMDragon |
Language |
C++14 (GCC 5.4.1) |
Score |
1400 |
Code Size |
1818 Byte |
Status |
AC |
Exec Time |
237 ms |
Memory |
16000 KB |
Compile Error
./Main.cpp: In function ‘void work()’:
./Main.cpp:44:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d",&n);
^
./Main.cpp:45:59: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
for (int i=1; i<=n; i++) scanf("%d",&t[i]),f[i]=-1LL<<60;
^
./Main.cpp:56:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d",&m);
^
./Main.cpp:58:71: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d %d",&p,&x),printf("%lld\n",max(l[p-1]+r[p+1],f[p]+t[p]-x));
^
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
1400 / 1400 |
Status |
|
|
Set Name |
Test Cases |
Sample |
sample_01.txt, sample_02.txt |
All |
sample_01.txt, sample_02.txt, subtask_1_high_equaly_01.txt, subtask_1_high_equaly_02.txt, subtask_1_high_equaly_03.txt, subtask_1_high_equaly_04.txt, subtask_1_high_rand_01.txt, subtask_1_high_rand_02.txt, subtask_1_high_rand_03.txt, subtask_1_high_rand_04.txt, subtask_1_killer_01.txt, subtask_1_killer_02.txt, subtask_1_low_equaly_01.txt, subtask_1_low_equaly_02.txt, subtask_1_low_equaly_03.txt, subtask_1_low_equaly_04.txt, subtask_1_low_rand_01.txt, subtask_1_low_rand_02.txt, subtask_1_low_rand_03.txt, subtask_1_low_rand_04.txt, subtask_1_max_high_equaly_01.txt, subtask_1_max_high_equaly_02.txt, subtask_1_max_high_equaly_03.txt, subtask_1_max_high_equaly_04.txt, subtask_1_max_high_rand_01.txt, subtask_1_max_high_rand_02.txt, subtask_1_max_high_rand_03.txt, subtask_1_max_high_rand_04.txt, subtask_1_max_low_equaly_01.txt, subtask_1_max_low_equaly_02.txt, subtask_1_max_low_equaly_03.txt, subtask_1_max_low_equaly_04.txt, subtask_1_max_low_rand_01.txt, subtask_1_max_low_rand_02.txt, subtask_1_max_low_rand_03.txt, subtask_1_max_low_rand_04.txt, subtask_1_max_rand_equaly_01.txt, subtask_1_max_rand_equaly_02.txt, subtask_1_max_rand_equaly_03.txt, subtask_1_max_rand_equaly_04.txt, subtask_1_max_rand_rand_01.txt, subtask_1_max_rand_rand_02.txt, subtask_1_max_rand_rand_03.txt, subtask_1_max_rand_rand_04.txt, subtask_1_min_rand_rand_01.txt, subtask_1_min_rand_rand_02.txt, subtask_1_rand_equaly_01.txt, subtask_1_rand_equaly_02.txt, subtask_1_rand_equaly_03.txt, subtask_1_rand_equaly_04.txt, subtask_1_rand_rand_01.txt, subtask_1_rand_rand_02.txt, subtask_1_rand_rand_03.txt, subtask_1_rand_rand_04.txt |
Case Name |
Status |
Exec Time |
Memory |
sample_01.txt |
AC |
4 ms |
10496 KB |
sample_02.txt |
AC |
4 ms |
10496 KB |
subtask_1_high_equaly_01.txt |
AC |
92 ms |
12800 KB |
subtask_1_high_equaly_02.txt |
AC |
66 ms |
12160 KB |
subtask_1_high_equaly_03.txt |
AC |
22 ms |
10624 KB |
subtask_1_high_equaly_04.txt |
AC |
148 ms |
13056 KB |
subtask_1_high_rand_01.txt |
AC |
91 ms |
12672 KB |
subtask_1_high_rand_02.txt |
AC |
67 ms |
12032 KB |
subtask_1_high_rand_03.txt |
AC |
97 ms |
12672 KB |
subtask_1_high_rand_04.txt |
AC |
129 ms |
12928 KB |
subtask_1_killer_01.txt |
AC |
4 ms |
10496 KB |
subtask_1_killer_02.txt |
AC |
4 ms |
10496 KB |
subtask_1_low_equaly_01.txt |
AC |
157 ms |
14464 KB |
subtask_1_low_equaly_02.txt |
AC |
92 ms |
13440 KB |
subtask_1_low_equaly_03.txt |
AC |
108 ms |
13952 KB |
subtask_1_low_equaly_04.txt |
AC |
51 ms |
11904 KB |
subtask_1_low_rand_01.txt |
AC |
124 ms |
13568 KB |
subtask_1_low_rand_02.txt |
AC |
90 ms |
12928 KB |
subtask_1_low_rand_03.txt |
AC |
80 ms |
12544 KB |
subtask_1_low_rand_04.txt |
AC |
153 ms |
14464 KB |
subtask_1_max_high_equaly_01.txt |
AC |
226 ms |
14848 KB |
subtask_1_max_high_equaly_02.txt |
AC |
234 ms |
15104 KB |
subtask_1_max_high_equaly_03.txt |
AC |
236 ms |
15488 KB |
subtask_1_max_high_equaly_04.txt |
AC |
230 ms |
14592 KB |
subtask_1_max_high_rand_01.txt |
AC |
236 ms |
15488 KB |
subtask_1_max_high_rand_02.txt |
AC |
228 ms |
14848 KB |
subtask_1_max_high_rand_03.txt |
AC |
227 ms |
14848 KB |
subtask_1_max_high_rand_04.txt |
AC |
226 ms |
15104 KB |
subtask_1_max_low_equaly_01.txt |
AC |
212 ms |
15744 KB |
subtask_1_max_low_equaly_02.txt |
AC |
216 ms |
16000 KB |
subtask_1_max_low_equaly_03.txt |
AC |
214 ms |
15744 KB |
subtask_1_max_low_equaly_04.txt |
AC |
222 ms |
16000 KB |
subtask_1_max_low_rand_01.txt |
AC |
209 ms |
16000 KB |
subtask_1_max_low_rand_02.txt |
AC |
224 ms |
15744 KB |
subtask_1_max_low_rand_03.txt |
AC |
213 ms |
16000 KB |
subtask_1_max_low_rand_04.txt |
AC |
216 ms |
16000 KB |
subtask_1_max_rand_equaly_01.txt |
AC |
227 ms |
14336 KB |
subtask_1_max_rand_equaly_02.txt |
AC |
227 ms |
14336 KB |
subtask_1_max_rand_equaly_03.txt |
AC |
237 ms |
14336 KB |
subtask_1_max_rand_equaly_04.txt |
AC |
236 ms |
14336 KB |
subtask_1_max_rand_rand_01.txt |
AC |
223 ms |
14336 KB |
subtask_1_max_rand_rand_02.txt |
AC |
223 ms |
14336 KB |
subtask_1_max_rand_rand_03.txt |
AC |
224 ms |
14336 KB |
subtask_1_max_rand_rand_04.txt |
AC |
230 ms |
14336 KB |
subtask_1_min_rand_rand_01.txt |
AC |
4 ms |
10496 KB |
subtask_1_min_rand_rand_02.txt |
AC |
4 ms |
10496 KB |
subtask_1_rand_equaly_01.txt |
AC |
13 ms |
10624 KB |
subtask_1_rand_equaly_02.txt |
AC |
133 ms |
12928 KB |
subtask_1_rand_equaly_03.txt |
AC |
63 ms |
11520 KB |
subtask_1_rand_equaly_04.txt |
AC |
102 ms |
12544 KB |
subtask_1_rand_rand_01.txt |
AC |
148 ms |
13824 KB |
subtask_1_rand_rand_02.txt |
AC |
94 ms |
12032 KB |
subtask_1_rand_rand_03.txt |
AC |
132 ms |
13440 KB |
subtask_1_rand_rand_04.txt |
AC |
71 ms |
11264 KB |