제출 #170778

#제출 시각아이디문제언어결과실행 시간메모리
170778juggernautK blocks (IZhO14_blocks)C++14
53 / 100
3 ms760 KiB
//Just try and the idea will come!
#include<bits/stdc++.h>
#define int long long int
using namespace std;
int n,k,i,a[101],dp[101][101],j,l,sp[101][7],logs[101];
int get(int l,int r){
    int len=logs[r-l+1];
    return max(sp[l][len],sp[r-(1ll<<len)+1][len]);
}
void calc(int k,int n){
    dp[n][k]=1e15;
    for(int i=k;i<=n;i++)dp[n][k]=min(dp[n][k],dp[i-1][k-1]+get(i,n));
}
main(){
    for(i=2;i<101;i++)logs[i]=logs[i/2]+1;
    scanf("%lld%lld",&n,&k);
    for(i=1;i<=n;i++)scanf("%lld",&a[i]),dp[i][1]=max(dp[i-1][1],a[i]),sp[i][0]=a[i];
    for(j=1;j<7;j++)
        for(i=1;i+(1ll<<j)-1<=n;i++)sp[i][j]=max(sp[i][j-1],sp[i+(1ll<<(j-1))][j-1]);
    for(j=2;j<=k;j++)
    for(i=j;i<=n;i++)calc(j,i);
    cout<<dp[n][k];
}

컴파일 시 표준 에러 (stderr) 메시지

blocks.cpp:14:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main(){
      ^
blocks.cpp: In function 'int main()':
blocks.cpp:16:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%lld%lld",&n,&k);
     ~~~~~^~~~~~~~~~~~~~~~~~
blocks.cpp:17:71: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     for(i=1;i<=n;i++)scanf("%lld",&a[i]),dp[i][1]=max(dp[i-1][1],a[i]),sp[i][0]=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...