Submission #285916

#TimeUsernameProblemLanguageResultExecution timeMemory
285916Ozy선물상자 (IOI15_boxes)C++17
0 / 100
1 ms384 KiB
#include "boxes.h"
#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for (int i = (a); i <= (b); i++)

vector<int> izq,der,arr;

long long delivery(int N, int K, int L, int p[]) {
    int mitad,a,ini,fin,b,cont,Ma,Mb;
    long long int res,MIN,sum;

    res = 0;
    mitad = L/2;
    izq.clear();
    der.clear();
    arr.clear();

    rep(i,0,N-1) {
        if (p[i] <= mitad) izq.push_back(p[i]);
        else der.push_back(-p[i]);
    }
    sort(izq.begin(),izq.end());
    sort(der.begin(),der.end());

    cont = 0;
    while ((izq.size() - cont) >= K) {
        rep(i,1,K-1) cont++;
        res += 2*(izq[cont]);
        cont++;
    }
    if (cont < izq.size()) Ma = izq[izq.size()-1];
    rep(i, cont ,izq.size()-1) arr.push_back(izq[i]);


    cont = 0;
    while ((der.size() - cont) >= K) {
        rep(i,1,K-1) cont++;
        a = (L - der[cont]);
        res += 2*a;
        cont++;
    }
    if (cont < der.size()) Mb = -der[der.size()-1];
    rep(i, cont, der.size()-1) arr.push_back(-der[i]);
    sort(arr.begin(), arr.end());

    if (arr.size() < K) {
        a = arr[0];
        b = arr[arr.size()-1];

        if (a > mitad) res += 2*(L-a);
        else if (b <= mitad) res += (2*b);
        else {
            Mb = L-Mb;

            a = min(L,(Ma+Mb));
            res += a;
        }
    }
    else {

        res += L;
        MIN = L;
        ini = -1;
        fin = K;

        rep(i,1,(arr.size()-K)+1) {
             a = 0;
             b = 0;

             if (ini >= 0) a = 2*arr[ini];
             if (fin < arr.size()) b = 2*(L - arr[fin]);

             sum = a+b;
             MIN = min(sum,MIN);

             ini++;
             fin++;
        }
        res += MIN;

    }

    cerr << res;
    return res;
}

Compilation message (stderr)

boxes.cpp: In function 'long long int delivery(int, int, int, int*)':
boxes.cpp:26:32: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   26 |     while ((izq.size() - cont) >= K) {
      |            ~~~~~~~~~~~~~~~~~~~~^~~~
boxes.cpp:31:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   31 |     if (cont < izq.size()) Ma = izq[izq.size()-1];
      |         ~~~~~^~~~~~~~~~~~
boxes.cpp:4:40: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define rep(i,a,b) for (int i = (a); i <= (b); i++)
      |                                        ^
boxes.cpp:32:5: note: in expansion of macro 'rep'
   32 |     rep(i, cont ,izq.size()-1) arr.push_back(izq[i]);
      |     ^~~
boxes.cpp:36:32: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   36 |     while ((der.size() - cont) >= K) {
      |            ~~~~~~~~~~~~~~~~~~~~^~~~
boxes.cpp:42:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |     if (cont < der.size()) Mb = -der[der.size()-1];
      |         ~~~~~^~~~~~~~~~~~
boxes.cpp:4:40: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define rep(i,a,b) for (int i = (a); i <= (b); i++)
      |                                        ^
boxes.cpp:43:5: note: in expansion of macro 'rep'
   43 |     rep(i, cont, der.size()-1) arr.push_back(-der[i]);
      |     ^~~
boxes.cpp:46:20: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   46 |     if (arr.size() < K) {
      |         ~~~~~~~~~~~^~~
boxes.cpp:4:40: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define rep(i,a,b) for (int i = (a); i <= (b); i++)
      |                                        ^
boxes.cpp:66:9: note: in expansion of macro 'rep'
   66 |         rep(i,1,(arr.size()-K)+1) {
      |         ^~~
boxes.cpp:71:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   71 |              if (fin < arr.size()) b = 2*(L - arr[fin]);
      |                  ~~~~^~~~~~~~~~~~
boxes.cpp:53:16: warning: 'Mb' may be used uninitialized in this function [-Wmaybe-uninitialized]
   53 |             Mb = L-Mb;
      |             ~~~^~~~~~
boxes.cpp:55:26: warning: 'Ma' may be used uninitialized in this function [-Wmaybe-uninitialized]
   55 |             a = min(L,(Ma+Mb));
      |                       ~~~^~~~
#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...