Submission #777474

#TimeUsernameProblemLanguageResultExecution timeMemory
777474boris_mihov선물상자 (IOI15_boxes)C++17
10 / 100
1 ms212 KiB
#include "boxes.h"
#include <algorithm>
#include <iostream>
#include <numeric>
#include <cassert>
#include <vector>

typedef long long llong;
const int MAXN = 10000000 + 10;
const llong INF = 1e18;

int n, k, l;
std::vector <int> left;
std::vector <int> right;

llong delivery(int N, int K, int L, int p[]) 
{
    n = N;
    k = K;
    l = L;

    for (int i = 0 ; i < n ; ++i)
    {
        left.push_back(p[i]);
    }

    llong ans = INF;
    llong curr = 0;

    for (int i = 0 ; i < left.size() ; i += k)
    {
        if (i + k - 1 < left.size())
        {
            curr += left[i + k - 1] * 2;
        } else
        {
            curr += left.back() * 2;
        }
    }

    ans = curr;
    for (int currTry = 0 ; currTry < n ; ++currTry)
    {
        if (right.size() && right.size() % k != 0)
        {
            curr -= 2 * right.back();
        }

        right.push_back(l - left.back());
        curr += 2 * right.back();
        curr -= 2 * left.back();

        left.pop_back();
        if (left.size() % k != 0)
        {
            curr += 2 * left.back();
        }

        ans = std::min(ans, curr);
    }

    return ans;
}

Compilation message (stderr)

boxes.cpp: In function 'llong delivery(int, int, int, int*)':
boxes.cpp:30:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   30 |     for (int i = 0 ; i < left.size() ; i += k)
      |                      ~~^~~~~~~~~~~~~
boxes.cpp:32:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   32 |         if (i + k - 1 < left.size())
      |             ~~~~~~~~~~^~~~~~~~~~~~~
#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...