Submission #1696347


Source Code Expand

#include<bits/stdc++.h>
#define LL long long
#define N 300005
using namespace std;
const int offset=1<<19;
LL mx[(1<<20)+3];
void setmax(int l,int r,LL val){
	l+=offset,r+=offset;
	for(l--,r++;(l^r)!=1;l>>=1,r>>=1){
		if(l&1^1) mx[l^1]=max(mx[l^1],val);
		if(r&1) mx[r^1]=max(mx[r^1],val);
	}
}

int n,t[N];
#define x first
#define y second
int head,tail;
pair<int,LL> q[N];
#define py(k) (f[k]+s[k]+((k)*1LL*(k)-(k))/2)
#define px(k) (k)
#define cross(x1,y1,x2,y2) ((x1)*(y2)-(x2)*(y1))
void solve(LL *s,LL *dp,LL *f,int *ch){
	head=tail=0;//(]
	for(int i=1;i<=n;i++){
		//add i-1 这是个上凸包 
		while(head-tail>1&&cross(px(i-1)-q[head-1].x,py(i-1)-q[head-1].y,
			q[head].x-q[head-1].x,q[head].y-q[head-1].y)<=0) head--;
		q[++head]=make_pair(px(i-1),py(i-1));
		//getans
		while(head-tail>1&&(q[head].y-q[head-1].y)<
			(q[head].x-q[head-1].x)*1LL*i) head--;
		ch[i]=q[head].x;
		dp[i]=py(ch[i])-1LL*ch[i]*i+(i*1LL*i+i)/2-s[i];
		f[i]=max(f[i-1],dp[i]);
	}
}

LL s[N],dp[2][N],f[2][N];int ch[2][N];
void getans(){
	memset(mx,0xc0,sizeof(mx));
	for(int i=1;i<=n;i++)
		setmax(ch[0][i]+1,i,dp[0][i]+f[1][n-i]);
	for(int i=1;i<offset;i++){
		mx[i<<1]=max(mx[i<<1],mx[i]);
		mx[i<<1|1]=max(mx[i<<1|1],mx[i]);
	}
}

int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d",&t[i]),s[i]=s[i-1]+t[i];
	solve(s,dp[0],f[0],ch[0]);
	for(int i=1;i<=n;i++) s[i]=s[i-1]+t[n+1-i];
	solve(s,dp[1],f[1],ch[1]);
	getans();
		
	int m;
	scanf("%d",&m);
	for(int i=1,p,x;i<=m;i++){
		scanf("%d%d",&p,&x);
		printf("%lld\n",max(f[0][p-1]+f[1][n-p],mx[p+offset]+t[p]-x));
	}
	return 0;
}

Submission Info

Submission Time
Task F - Contest with Drinks Hard
User Wuvin
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1644 Byte
Status WA
Exec Time 182 ms
Memory 26624 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:51:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d",&n);
                ^
./Main.cpp:52:58: 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]),s[i]=s[i-1]+t[i];
                                                          ^
./Main.cpp:59:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d",&m);
                ^
./Main.cpp:61:22: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d",&p,&x);
                      ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 1400
Status
AC × 2
AC × 53
WA × 1
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 10 ms 22272 KB
sample_02.txt AC 9 ms 22272 KB
subtask_1_high_equaly_01.txt AC 52 ms 23808 KB
subtask_1_high_equaly_02.txt AC 35 ms 23424 KB
subtask_1_high_equaly_03.txt AC 28 ms 22400 KB
subtask_1_high_equaly_04.txt AC 116 ms 24192 KB
subtask_1_high_rand_01.txt AC 55 ms 23808 KB
subtask_1_high_rand_02.txt AC 48 ms 23424 KB
subtask_1_high_rand_03.txt AC 64 ms 23680 KB
subtask_1_high_rand_04.txt AC 95 ms 24064 KB
subtask_1_killer_01.txt AC 10 ms 22272 KB
subtask_1_killer_02.txt AC 10 ms 22272 KB
subtask_1_low_equaly_01.txt AC 135 ms 25472 KB
subtask_1_low_equaly_02.txt AC 53 ms 24192 KB
subtask_1_low_equaly_03.txt AC 65 ms 24576 KB
subtask_1_low_equaly_04.txt AC 32 ms 23296 KB
subtask_1_low_rand_01.txt AC 108 ms 24832 KB
subtask_1_low_rand_02.txt AC 66 ms 24064 KB
subtask_1_low_rand_03.txt AC 65 ms 23936 KB
subtask_1_low_rand_04.txt AC 118 ms 25472 KB
subtask_1_max_high_equaly_01.txt AC 165 ms 25472 KB
subtask_1_max_high_equaly_02.txt AC 176 ms 25728 KB
subtask_1_max_high_equaly_03.txt AC 164 ms 25984 KB
subtask_1_max_high_equaly_04.txt AC 165 ms 25216 KB
subtask_1_max_high_rand_01.txt AC 166 ms 25984 KB
subtask_1_max_high_rand_02.txt AC 171 ms 25472 KB
subtask_1_max_high_rand_03.txt AC 182 ms 25472 KB
subtask_1_max_high_rand_04.txt AC 161 ms 25728 KB
subtask_1_max_low_equaly_01.txt AC 160 ms 26368 KB
subtask_1_max_low_equaly_02.txt AC 166 ms 26624 KB
subtask_1_max_low_equaly_03.txt AC 159 ms 26368 KB
subtask_1_max_low_equaly_04.txt AC 160 ms 26624 KB
subtask_1_max_low_rand_01.txt AC 169 ms 26624 KB
subtask_1_max_low_rand_02.txt AC 168 ms 26368 KB
subtask_1_max_low_rand_03.txt AC 156 ms 26624 KB
subtask_1_max_low_rand_04.txt WA 160 ms 26624 KB
subtask_1_max_rand_equaly_01.txt AC 152 ms 24832 KB
subtask_1_max_rand_equaly_02.txt AC 167 ms 24832 KB
subtask_1_max_rand_equaly_03.txt AC 169 ms 24960 KB
subtask_1_max_rand_equaly_04.txt AC 164 ms 24832 KB
subtask_1_max_rand_rand_01.txt AC 177 ms 24832 KB
subtask_1_max_rand_rand_02.txt AC 167 ms 24832 KB
subtask_1_max_rand_rand_03.txt AC 167 ms 24832 KB
subtask_1_max_rand_rand_04.txt AC 158 ms 24832 KB
subtask_1_min_rand_rand_01.txt AC 10 ms 22272 KB
subtask_1_min_rand_rand_02.txt AC 9 ms 22272 KB
subtask_1_rand_equaly_01.txt AC 17 ms 22272 KB
subtask_1_rand_equaly_02.txt AC 104 ms 23936 KB
subtask_1_rand_equaly_03.txt AC 54 ms 22912 KB
subtask_1_rand_equaly_04.txt AC 78 ms 23680 KB
subtask_1_rand_rand_01.txt AC 87 ms 24320 KB
subtask_1_rand_rand_02.txt AC 76 ms 23424 KB
subtask_1_rand_rand_03.txt AC 79 ms 24320 KB
subtask_1_rand_rand_04.txt AC 69 ms 22912 KB