Submission #576104

#TimeUsernameProblemLanguageResultExecution timeMemory
576104stevancvBoxes with souvenirs (IOI15_boxes)C++14
100 / 100
542 ms271612 KiB
#include <bits/stdc++.h>
#include "boxes.h"
#define ll long long
#define ld long double
#define sp ' '
#define en '\n'
#define smin(a, b) a = min(a, b)
#define smax(a, b) a = max(a, b)
using namespace std;
ll delivery(int N, int K, int D, int pos[]) {
    ll n = N; ll k = K; ll d = D;
    vector<ll> pref(n), suff(n);
    for (int i = 0; i < n; i++) {
        pref[i] = 2 * pos[i];
        if (i >= k) pref[i] += pref[i - k];
    }
    for (int i = n - 1; i >= 0; i--) {
        suff[i] = 2 * (d - pos[i]);
        if (i <= n - k - 1) suff[i] += suff[i + k];
    }
    ll ans = suff[0];
    for (int i = 0; i < n; i++) {
        ll x = pref[i];
        if (i < n - 1) x += suff[i + 1];
        smin(ans, x);
    }
    if (k < n) smin(ans, d + suff[k]);
    else smin(ans, d);
    for (int i = 0; i < n; i++) {
        ll x = pref[i] + d;
        if (i + k + 1 < n) x += suff[i + k + 1];
        smin(ans, x);
    }
    return ans;
}

Compilation message (stderr)

boxes.cpp: In function 'long long int delivery(int, int, int, int*)':
boxes.cpp:17:20: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   17 |     for (int i = n - 1; i >= 0; 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...