Submission #780078

#TimeUsernameProblemLanguageResultExecution timeMemory
780078vjudge1Boxes with souvenirs (IOI15_boxes)C++17
35 / 100
1 ms340 KiB
#include "boxes.h"
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define pii pair<long long, long long>
#define st first
#define nd second
#define sp " "
#define endl "\n"
#define ll long long

long long delivery(int N, int K, int L, int p[]) {
    int n = N, k = K, l = L;
    sort(p, p + n);

    ll curr = 0;
    for (int i = 0; i < n; i += k){
        int to =  min(n - 1, i + k - 1);
        if (p[to] <= L / 2){
            curr += 2 * p[to];
        }
        else if (p[i] >= L / 2){
            curr += 2 * (L - p[i]);
        }
        else curr += L;
    }

    ll ans = curr;
    curr = 0;
    int pos = 0;
    while(pos < n && p[pos] <= L / 2) pos++;

     for (int i = 0; i < pos; i += k){
        if (p[i] > L / 2) break;
        int to =  min(pos - 1, i + k - 1);
        curr += 2 * min(p[to], L / 2); 
    }

    for (int i = pos; i < n; i += k){
        int to =  min(n - 1, i + k - 1);
        curr += 2 * (L - p[i]);
    }
    ans = min(ans, curr);
    curr = 0;

    reverse(p, p + n);

    for (int i = 0; i < n; i += k){
        int to =  min(n - 1, i + k - 1);
        if (p[i] <= L / 2){
            curr += 2 * p[i];
        }
        else if (p[to] >= L / 2){
            curr += 2 * (L - p[to]);
        }
        else curr += L;
    }
    return min(ans, curr);
}

Compilation message (stderr)

boxes.cpp: In function 'long long int delivery(int, int, int, int*)':
boxes.cpp:40:13: warning: unused variable 'to' [-Wunused-variable]
   40 |         int to =  min(n - 1, i + k - 1);
      |             ^~
boxes.cpp:13:23: warning: unused variable 'l' [-Wunused-variable]
   13 |     int n = N, k = K, l = L;
      |                       ^
#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...