# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
57047 | Plurm | 수열 (APIO14_sequence) | C++17 | 2056 ms | 107388 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <cstdio>
#include <cstring>
int a[100005];
long long dp[100005];
long long qs[100005];
int par[100005][256];
struct{
long long M,C;
int idx;
} L1[100005], L2[100005];
int prt[100005];
int ptr1,ptr2;
int csz1,csz2;
inline bool bad(long long Mx,long long Cx,long long My,long long Cy,long long Mz,long long Cz){
return (Mx-My)*(Cz-Cx) <= (Mx-Mz)*(Cy-Cx);
}
int main(){
int n,k;
scanf("%d%d",&n,&k);
k++;
csz1++;
for(int i = 1; i <= n; i++){
scanf("%d",a+i);
qs[i] = qs[i-1] + (long long)a[i];
dp[i] = -1e16;
}
for(int j = 1; j <= k; j++){
csz2 = ptr2 = 0;
int id;
for(int i = j; i <= n; i++){
if(ptr1 >= csz1) ptr1 = csz1-1;
while(ptr1 < csz1-1 && L1[ptr1+1].M*qs[i] + L1[ptr1+1].C > L1[ptr1].M*qs[i] + L1[ptr1].C) ptr1++;
par[i][j] = L1[ptr1].idx;
dp[i] = L1[ptr1].M*qs[i] + L1[ptr1].C;
while(csz2 >= 2 && bad(L2[csz2-2].M,L2[csz2-2].C,L2[csz2-1].M,L2[csz2-1].C,qs[i],dp[i]-qs[i]*qs[i])) csz2--;
L2[csz2].M = qs[i];
L2[csz2].C = dp[i] - qs[i]*qs[i];
L2[csz2].idx = i;
csz2++;
}
for(int i = 0; i < csz2; i++){
L1[i] = L2[i];
}
csz1 = csz2;
ptr1 = ptr2;
}
printf("%lld\n",dp[n]);
int x = n;
csz1 = 0;
for(int j = k; j > 1; j--){
x = par[x][j];
prt[csz1++] = x;
}
for(int i = 0; i < csz1; i++){
printf("%d ",prt[i]);
}
}
컴파일 시 표준 에러 (stderr) 메시지
# | 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... |