Submission #621960

#TimeUsernameProblemLanguageResultExecution timeMemory
621960DeepessonBoxes with souvenirs (IOI15_boxes)C++17
10 / 100
2 ms384 KiB
#include <bits/stdc++.h>
long long delivery(int N, int K, int L, int p[]);

using ll = long long;
ll inf = 1LL<<60LL;
long long delivery(int N, int K, int L, int p[]) {
    ll dp[N+1];
    for(auto&x:dp)x=inf;
    dp[0]=0;
    std::multiset<ll> setnob,setcob;
    setnob.insert(0);
    setcob.insert(2*L);
    std::deque<ll> dn,dc;
    dn.push_back(0);
    dc.push_back(2*L);
    for(int i=0;i!=N;++i){
        ll custo_local = std::min((ll)L,(ll)2*p[i]);
        dp[i+1]=std::min(*setnob.begin()+custo_local,*setcob.begin());
        if(dn.size()==K){
            setnob.erase(setnob.find(dn.front()));
            dn.pop_front();
        }
        if(dc.size()==K){
            setcob.erase(setcob.find(dc.front()));
            dc.pop_front();
        }
        ll custo_push = 2*L-2*p[i+1];
        setnob.insert(dp[i+1]);
        dn.push_back(dp[i+1]);
        setcob.insert(dp[i+1]+custo_push);
        dc.push_back(dp[i+1]+custo_push);
    }
    return dp[N];
}

Compilation message (stderr)

boxes.cpp: In function 'long long int delivery(int, int, int, int*)':
boxes.cpp:19:21: warning: comparison of integer expressions of different signedness: 'std::deque<long long int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   19 |         if(dn.size()==K){
      |            ~~~~~~~~~^~~
boxes.cpp:23:21: warning: comparison of integer expressions of different signedness: 'std::deque<long long int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   23 |         if(dc.size()==K){
      |            ~~~~~~~~~^~~
#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...