Submission #158445

# Submission time Handle Problem Language Result Execution time Memory
158445 2019-10-17T05:56:54 Z davitmarg Boxes with souvenirs (IOI15_boxes) C++17
10 / 100
2 ms 408 KB
/*DavitMarg*/
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#include <map>
#include <set>
#include <queue>
#include <iomanip>
#include <bitset>
#include <stack>
#include <cassert>
#include <iterator>
#include <fstream>
#define mod 1000000000ll
#define LL long long
#define LD long double
#define MP make_pair
#define PB push_back
#define all(v) v.begin(), v.end()
using namespace std;

int n;
LL k, m;
deque<int> pos;
LL ans;

LL delivery(int N, int K, int L, int *P)
{
    n = N;
    k = K;
    m = L;
    for (int i = 0; i < N; i++)
        if (P[i])
            pos.PB(P[i]);
    while (!pos.empty())
    {
        if (pos.size() >= 2 * k)
        {
            if (pos[k - 1] < (m - pos[pos.size() - k]))
            {
                ans += 2ll * pos[k - 1];
                for (int i = 0; i < k; i++)
                    pos.pop_front();
            }
            else
            {
                ans += 2ll * (m - pos[pos.size() - k]);
                for (int i = 0; i < k; i++)
                    pos.pop_back();
            }
        }
        else
        {
            LL add1 = 0, add2 = 0;
            k = min(k, (LL)pos.size());
            add1 += min(2ll * pos[k - 1], m);
            if (k != pos.size())
                add1 += min(2ll * (m - pos[k]), m);

            add2 += min(2ll * (m - pos[pos.size() - k]), m);
            if (pos.size() != k)
                add2 += min(2ll * pos[pos.size() - k - 1], m);
            ans += min(add1, add2);
            break;
        }
    }
    return ans;
}

#ifdef death

int main()
{
    int N, K, L;
    int P[102];
    cin >> N >> K >> L;
    for (int i = 0; i < N; i++)
        cin >> P[i];
    cout << delivery(N, K, L, P) << endl;
    return 0;
}

#endif

/*

3 1 8
1 2 5

*/

Compilation message

boxes.cpp: In function 'long long int delivery(int, int, int, int*)':
boxes.cpp:40:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if (pos.size() >= 2 * k)
             ~~~~~~~~~~~^~~~~~~~
boxes.cpp:60:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if (k != pos.size())
                 ~~^~~~~~~~~~~~~
boxes.cpp:64:28: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if (pos.size() != k)
                 ~~~~~~~~~~~^~~~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 256 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 408 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 348 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 376 KB Output is correct
5 Incorrect 2 ms 376 KB Output isn't correct
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Incorrect 2 ms 376 KB Output isn't correct
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 256 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 408 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Correct 2 ms 348 KB Output is correct
9 Correct 2 ms 256 KB Output is correct
10 Correct 2 ms 376 KB Output is correct
11 Correct 2 ms 376 KB Output is correct
12 Incorrect 2 ms 376 KB Output isn't correct
13 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 256 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 408 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Correct 2 ms 348 KB Output is correct
9 Correct 2 ms 256 KB Output is correct
10 Correct 2 ms 376 KB Output is correct
11 Correct 2 ms 376 KB Output is correct
12 Incorrect 2 ms 376 KB Output isn't correct
13 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 256 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 408 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Correct 2 ms 348 KB Output is correct
9 Correct 2 ms 256 KB Output is correct
10 Correct 2 ms 376 KB Output is correct
11 Correct 2 ms 376 KB Output is correct
12 Incorrect 2 ms 376 KB Output isn't correct
13 Halted 0 ms 0 KB -