Submission #65236

# Submission time Handle Problem Language Result Execution time Memory
65236 2018-08-07T06:10:05 Z daniel_02 Boxes with souvenirs (IOI15_boxes) C++17
10 / 100
2 ms 376 KB
#include "boxes.h"
#include <bits/stdc++.h>

#define ll long long

using namespace std;

ll f(int x, int N, int L, int K, int p[])
{
            ll cur = 0, ans = 1LL * 1e18 + 7;

            for (int j = x; j >= 0; j -= K)
            {
                if (p[j] <= L / 2)
                    cur += (p[j] * 2);
                else
                {
                    if (j - K + 1 >= 0)
                    {
                        cur += min((L - p[j - K + 1]) * 2, L);
                    }
                    else
                    {
                        if (p[0] > L / 2)
                            cur += min((L - p[0]) * 2, L);
                        else
                            cur += L;
                    }
                }
            }

            for (int j = x + 1; j < N; j += K)
            {
                if (p[j] > L / 2)
                {
                    cur += ((L - p[j]) * 2);
                }
                else
                {
                    if (j + K - 1 < N)
                    {
                        cur += min(p[j + K - 1] * 2, L);
                    }
                    else
                    {
                        if (p[N - 1] <= L / 2)
                            cur += min(p[N - 1] * 2, L);
                        else
                            cur += L;
                    }
                }
            }
            ans = min(ans, cur);

            cur = 0;

            for (int j = x; j < N; j += K)
            {
                if (p[j] > L / 2)
                {
                    cur += ((L - p[j]) * 2);
                }
                else
                {
                    if (j + K - 1 < N)
                    {
                        cur += min(p[j + K - 1] * 2, L);
                    }
                    else
                    {
                        if (p[N - 1] <= L / 2)
                            cur += min(p[N - 1] * 2, L);
                        else
                            cur += L;
                    }
                }
            }

            for (int j = x - 1; j >= 0; j -= K)
            {
                if (p[j] <= L / 2)
                    cur += (p[j] * 2);
                else
                {
                    if (j - K + 1 >= 0)
                    {
                        cur += min((L - p[j - K + 1]) * 2, L);
                    }
                    else
                    {
                        if (p[0] > L / 2)
                            cur += min((L - p[0]) * 2, L);
                        else
                            cur += L;
                    }
                }
            }
            ans = min(ans, cur);

            return ans;
}

long long delivery(int N, int K, int L, int p[]) {

    long long ans;

    ans = 1LL * 1e18 + 7;

    int l = 0, r = N - 1;

        while (r - l > 1)
        {
            int mid = (r + l) >> 1;

            if (f(mid, N, L, K, p) > f(mid + 1, N, L, K, p))
                l = mid + 1;
            else
                r = mid;
        }
        ans = min(ans, f(l, N, L, K, p));
        if (l + 1 < N)
            ans = min(ans, f(l + 1, N, L, K, p));

    return ans;
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 256 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 252 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 256 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Incorrect 2 ms 256 KB Output isn't correct
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 256 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 252 KB Output is correct
8 Incorrect 2 ms 256 KB Output isn't correct
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 256 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 252 KB Output is correct
8 Incorrect 2 ms 256 KB Output isn't correct
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 256 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 252 KB Output is correct
8 Incorrect 2 ms 256 KB Output isn't correct
9 Halted 0 ms 0 KB -