Submission #587029

#TimeUsernameProblemLanguageResultExecution timeMemory
587029keta_tsimakuridzeBoxes with souvenirs (IOI15_boxes)C++14
100 / 100
539 ms254996 KiB
#include "boxes.h"
#include<bits/stdc++.h>
using namespace std;
#define ll long long
long long delivery(int N, int K, int L, int p[]) {
    vector<int> a, b;
    a.push_back(-1);
    for(int i = 0; i < N; i++) {
        if(p[i] <= L - p[i]) a.push_back(p[i]);
        else b.push_back(L - p[i]);
    }
    b.push_back(-1);
    reverse(b.begin(), b.end());
    vector<ll> dpa(a.size()), dpb(b.size());
    for(int i = 1; i < a.size();  i++) {
        dpa[i] = (i >= K ? dpa[i - K] + a[i] * 2 : a[i] * 2);
    }
    for(int i = 1; i < b.size(); i++) {
        dpb[i] = (i >= K ? dpb[i - K] + b[i] * 2 : b[i] * 2);
    }
    ll ans = dpa[(int)a.size() - 1] + dpb[(int)b.size() - 1];
    for(int i = 0; i < a.size(); i++) {
            if((int)a.size() - i - 1 > K) continue;
            int lft = K - ((int)a.size() - i - 1);
            int id = max(0, (int)b.size() - 1 - lft);
            ans = min(ans, dpa[i] + dpb[id] + L);
    }
    return ans;

}

Compilation message (stderr)

boxes.cpp: In function 'long long int delivery(int, int, int, int*)':
boxes.cpp:15:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   15 |     for(int i = 1; i < a.size();  i++) {
      |                    ~~^~~~~~~~~~
boxes.cpp:18:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |     for(int i = 1; i < b.size(); i++) {
      |                    ~~^~~~~~~~~~
boxes.cpp:22:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   22 |     for(int i = 0; i < a.size(); 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...