Submission #317865

# Submission time Handle Problem Language Result Execution time Memory
317865 2020-10-30T15:38:11 Z VROOM_VARUN Boxes with souvenirs (IOI15_boxes) C++14
0 / 100
1 ms 384 KB
/*
ID: varunra2
LANG: C++
TASK: boxes
*/

#include<bits/stdc++.h>
using namespace std;

#ifdef DEBUG
#include "lib/debug.h"
#define debug(...) cerr << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__)
#define debug_arr(...) \
  cerr << "[" << #__VA_ARGS__ << "]:", debug_arr(__VA_ARGS__)
#pragma GCC diagnostic ignored "-Wsign-compare"
//#pragma GCC diagnostic ignored "-Wunused-parameter"
//#pragma GCC diagnostic ignored "-Wunused-variable"
#else
#define debug(...) 42
#endif

#define EPS 1e-9
#define IN(A, B, C) assert(B <= A && A <= C)
#define INF (int)1e9
#define MEM(a, b) memset(a, (b), sizeof(a))
#define MOD 1000000007
#define MP make_pair
#define PB push_back
#define all(cont) cont.begin(), cont.end()
#define rall(cont) cont.end(), cont.begin()
#define x first
#define y second

const double PI = acos(-1.0);
typedef long long ll;
typedef long double ld;
typedef pair<int, int> PII;
typedef map<int, int> MPII;
typedef multiset<int> MSETI;
typedef set<int> SETI;
typedef set<string> SETS;
typedef vector<int> VI;
typedef vector<PII> VII;
typedef vector<VI> VVI;
typedef vector<string> VS;

#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define trav(a, x) for(auto& a : x)
#define sz(x) (int)(x).size()
typedef pair<int, int> pii;
typedef vector<int> vi;
#pragma GCC diagnostic ignored "-Wsign-compare"
// util functions

int n, k, l;
VI vals;

void calc(vector<ll>& dp) {
  for(int i = 0; i < n; i++) {
    dp[i] = 2 * vals[i];
    if(i >= k) dp[i] += dp[i - k];
  }
  dp.insert(dp.begin(), 0);
}

ll delivery(int N, int K, int L, int *positions) {
  n = N;
  k = K;
  l = L;
  vals.resize(n);
  for(int i = 0; i < n; i++) {
    vals[i] = positions[i];
  }
  sort(all(vals));
  vector<ll> dp1(n);
  vector<ll> dp2(n);
  calc(dp1);
  for(int i = 0; i < n; i++) {
    vals[i] = l - vals[i];
  }
  if(vals[0] == l) {
    vals[0] = 0;
  }
  sort(all(vals));
  calc(dp2);
  ll ret = (ll)(1e16);
  for(int i = 0; i <= n; i++) {
    ret = min(ret, dp1[i] + dp2[n - i]);
  }
  return ret;
}

// int main() {
// #ifndef ONLINE_JUDGE
//   freopen("boxes.in", "r", stdin);
//   freopen("boxes.out", "w", stdout);
// #endif
//   cin.sync_with_stdio(0); cin.tie(0);

//   int n, k, l;
//   cin >> n >> k >> l;

//   int positions[n];
//   for(int i = 0; i < n; i++) {
//     cin >> positions[i];
//   }

//   cout << delivery(n, k, l, positions) << '\n';


//   return 0;
// }
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Incorrect 1 ms 384 KB Output isn't correct
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 384 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 256 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Incorrect 1 ms 384 KB Output isn't correct
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Incorrect 1 ms 384 KB Output isn't correct
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Incorrect 1 ms 384 KB Output isn't correct
5 Halted 0 ms 0 KB -