# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1160030 | haruki291sa | Split the sequence (APIO14_sequence) | C++17 | 0 ms | 320 KiB |
#include "bits/stdc++.h"
using namespace std;
using ll=long long;
ll D[100003][2],S[100003];
int dq[100003],anc[100003][222];
bool vis[100003];
int n,k;
bool g1(int a,int b,int c){
return (D[b][0]-D[a][0])>=(S[b]-S[a])*(S[n]-S[c]);
}
bool g2(int a,int b,int c){
return (D[b][0]-D[a][0])*(S[c]-S[b])<=(D[c][0]-D[b][0])*(S[b]-S[a]);
}
int main(){
ios_base::sync_with_stdio(false);cin.tie(NULL);
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>S[i];
S[i]+=S[i-1];
}
int cnt,pos;
for(int i=1;i<=k;i++){
cnt=pos=0;
dq[0]=0;
for(int j=1;j<=n;j++){
while(pos<cnt&&g1(dq[pos],dq[pos+1],j))pos++;
int idx=dq[pos];
D[j][1]=D[idx][0]+(S[j]-S[idx])*(S[n]-S[j]);
anc[i][j]=idx;
dq[++cnt]=j;
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |