제출 #674830

#제출 시각아이디문제언어결과실행 시간메모리
674830benjaminkleyn선물상자 (IOI15_boxes)C++17
10 / 100
0 ms212 KiB
#include <bits/stdc++.h>
#include "boxes.h"
using namespace std;
typedef long long ll;

ll solve1(int n, int k, int l, int p[])
{
    vector<int> L, R;
    for (int i = 0; i < n; i++)
        if (l - p[i] < p[i])
            L.push_back(l - p[i]);
        else
            R.push_back(p[i]);

    sort(L.rbegin(), L.rend());
    sort(R.rbegin(), R.rend());

    ll ans = 0;

    while (L.size() >= k)
    {
        for (int i = 0; i < k - 1; i++)
            L.pop_back();
        ans += 2 * L.back();
        L.pop_back();
    }
    while (R.size() >= k)
    {
        for (int i = 0; i < k - 1; i++)
            R.pop_back();
        ans += 2 * R.back();
        R.pop_back();
    }
    if (L.size() == 0)
        ans += 2 * R.back();
    else if (R.size() == 0)
        ans += 2 * L.back();
    else if (L.size() + R.size() <= k)
        ans += l;
    else
        ans += l + min(R[k - L.size()], L[k - R.size()]);

    return ans;
}
ll solve2(int n, int k, int l, int p[])
{
    vector<int> L, R;
    for (int i = 0; i < n; i++)
        if (l - p[i] < p[i])
            L.push_back(l - p[i]);
        else
            R.push_back(p[i]);

    sort(L.rbegin(), L.rend());
    sort(R.rbegin(), R.rend());

    ll ans = 0;

    while (L.size() >= k)
    {
        for (int i = 0; i < k - 1; i++)
            L.pop_back();
        ans += 2 * L.back();
        L.pop_back();
    }
    while (R.size() >= k)
    {
        for (int i = 0; i < k - 1; i++)
            R.pop_back();
        ans += 2 * R.back();
        R.pop_back();
    }
    if (L.size() == 0)
        ans += 2 * R.back();
    else if (R.size() == 0)
        ans += 2 * L.back();
    else if (L.size() + R.size() <= k)
        ans += l;
    else
        ans += l + min(R[k - L.size()], L[k - R.size()]);

    return ans;
}

ll delivery(int n, int k, int l, int p[]) 
{
    return min(solve1(n, k, l, p), solve2(n, k, l, p));
}

컴파일 시 표준 에러 (stderr) 메시지

boxes.cpp: In function 'll solve1(int, int, int, int*)':
boxes.cpp:20:21: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   20 |     while (L.size() >= k)
      |            ~~~~~~~~~^~~~
boxes.cpp:27:21: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   27 |     while (R.size() >= k)
      |            ~~~~~~~~~^~~~
boxes.cpp:38:34: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   38 |     else if (L.size() + R.size() <= k)
      |              ~~~~~~~~~~~~~~~~~~~~^~~~
boxes.cpp: In function 'll solve2(int, int, int, int*)':
boxes.cpp:59:21: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   59 |     while (L.size() >= k)
      |            ~~~~~~~~~^~~~
boxes.cpp:66:21: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   66 |     while (R.size() >= k)
      |            ~~~~~~~~~^~~~
boxes.cpp:77:34: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   77 |     else if (L.size() + R.size() <= k)
      |              ~~~~~~~~~~~~~~~~~~~~^~~~
#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...