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
AC × 2
AC × 54
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