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 |
|
|
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 |