Submission #163154

#TimeUsernameProblemLanguageResultExecution timeMemory
163154kostia244Boxes with souvenirs (IOI15_boxes)C++14
35 / 100
1320 ms400 KiB
#include "boxes.h" #include<bits/stdc++.h> #define pb push_back #define all(x) x.begin(), x.end() using namespace std; using ll = long long; using vi = vector<ll>; ll n, k, l; vi pos, dpl, dpr; ll solve() { ll ans = LLONG_MAX; dpl.assign(n + 2,0); dpr.assign(n + 2,0); ll p, cst; p = cst = 0; for (int i = 1; i <= n; i++) { cst += min(abs(p - pos[i]), l - abs(p - pos[i])), p = pos[i]; dpl[i] = cst + min(p, l - p); if (i % k == 0) { cst += min(p, l - p); p = 0; } } ans = dpl[n], p = 0, cst = 0; for (int i = n; i; i--) { cst += min(abs(p - pos[i]), l - abs(p - pos[i])), p = pos[i]; dpr[i] = cst + min(p, l - p); if ((n - i + 1) % k == 0) { cst += min(p, l - p); p = 0; } ans = min(ans, dpr[i] + dpl[i - 1]); } return ans; } long long delivery(int N, int K, int L, int P[]) { n = N, k = K, l = L; pos.resize(n + 2); for (int i = 0; i < n; i++) pos[i + 1] = P[i]; ll ans = solve(); if(N<11) do { ans = min(ans, solve()); } while(next_permutation(pos.begin()+1, pos.begin()+1+n)); return ans; }

Compilation message (stderr)

boxes.cpp: In function 'll solve()':
boxes.cpp:25:15: warning: conversion to 'int' from 'll {aka long long int}' may alter its value [-Wconversion]
  for (int i = n; i; 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...