# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
212748 | kig9981 | 수열 (APIO14_sequence) | C++17 | 16 ms | 3580 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#ifdef NON_SUBMIT
#define TEST(n) (n)
#define tout cerr
#else
#define TEST(n) ((void)0)
#define tout cin
#endif
using namespace std;
long long D[2][100001];
int N, PS[100001], P[200][100001];
double cross(int a, int b, int k)
{
return 1.*(1LL*PS[a]*PS[a]-1LL*PS[b]*PS[b]+D[k&1][b]-D[k&1][a])/(PS[a]-PS[b]);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
TEST(freopen("input.txt","r",stdin));
TEST(freopen("output.txt","w",stdout));
TEST(freopen("debug.txt","w",stderr));
int K, j;
vector<int> idx;
cin>>N>>K;
for(int i=1;i<=N;i++) {
cin>>PS[i]; PS[i]+=PS[i-1];
}
for(int k=1;k<K;k++) {
idx.clear(); idx.push_back(j=0);
for(int i=1;i<=N;i++) {
while(j+1<idx.size() && cross(idx[j],idx[j+1],k-1)-1e-9<=PS[i]) j++;
D[k&1][i]=(PS[i]-PS[idx[j]])*PS[idx[j]]+D[~k&1][idx[j]];
P[k][i]=idx[j];
while(idx.size()>1 && cross(idx[idx.size()-2],idx.back(),k-1)>cross(idx.back(),i,k-1)) idx.pop_back();
idx.push_back(i);
}
}
idx.clear(); j=0;
for(int i=1;i<=N;i++) if(1LL*(PS[N]-PS[i])*PS[i]+D[~K&1][i]>1LL*(PS[N]-PS[j])*PS[j]+D[~K&1][j]) j=i;
cout<<1LL*(PS[N]-PS[j])*PS[j]+D[~K&1][j]<<'\n';
for(int k=K-1;k>=0;k--) {
idx.push_back(j);
j=P[k][j];
}
reverse(idx.begin(),idx.end());
for(auto a: idx) cout<<a<<' ';
return 0;
}
컴파일 시 표준 에러 (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... |