제출 #60740

#제출 시각아이디문제언어결과실행 시간메모리
60740Flugan42선물상자 (IOI15_boxes)C++14
50 / 100
2024 ms12528 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<ll> vi;
typedef pair<ll,ll> ii;
typedef vector<ii> vii;
typedef long double lld;
#define rep(i,a,b) for(ll i = a; i < b; i++)
#define per(i,a,b) for(ll i = a; i >= b; i--)
#define all(x) x.begin(),x.end()
#define sz(x) (ll)(x).size()
#define trav(a,x) for(auto a : x)
#define inf 1000000000000000000

ll n,myL,k;
vi a;

long long find(ll h, ll v){
  if (h+v > n) return inf;
  ll l = n-h-v;
  ll res = ((l+k-1)/k)*myL;
  ll cur = h-1;
  while(cur >= 0){
    res += a[cur]*2;
    cur -= k;
  }
  cur = n-v;
  while (cur < n){
    res += (myL-a[cur])*2;
    cur += k;
  }
  return res;
}

long long delivery(int N, int K, int L, int p[]) {
  ll best = inf; n = N, myL = L, k = K;
  rep(i,0,N) {
    if (p[i] == 0) n--;
    else a.push_back(p[i]);
  }
  rep(h,0,n+1) rep(v,0,n+1) best = min(best, find(h,v));
  return best;
}
#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...