제출 #57050

#제출 시각아이디문제언어결과실행 시간메모리
57050PlurmSplit the sequence (APIO14_sequence)C++17
71 / 100
2052 ms107420 KiB
#include <cstdio> #include <cstring> int a[100005]; long long dp[100005]; long long qs[100005]; int par[100005][256]; struct cst{ long long M,C; int idx; } L1[100005], L2[100005]; int prt[100005]; int ptr1,ptr2; int csz1,csz2; bool bad(cst x, cst y, cst z){ return (x.M-y.M)*(z.C-x.C) <= (x.M-z.M)*(y.C-x.C); } 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; cst o = {qs[i],dp[i]-qs[i]*qs[i],i}; while(csz2 >= 2 && bad(L2[csz2-2],L2[csz2-1],o)) csz2--; L2[csz2++] = o; } 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) 메시지

sequence.cpp: In function 'int main()':
sequence.cpp:29:7: warning: unused variable 'id' [-Wunused-variable]
   int id;
       ^~
sequence.cpp:19:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d",&n,&k);
  ~~~~~^~~~~~~~~~~~~~
sequence.cpp:23:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d",a+i);
   ~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...