Submission #1155186

#TimeUsernameProblemLanguageResultExecution timeMemory
1155186aarb_.tomatexdBoxes with souvenirs (IOI15_boxes)C++20
10 / 100
0 ms328 KiB
#include "boxes.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long

ll delivery(int N, int K, int L, int positions[]) {
    ll time = 0;

    vector<int> left, right;

    // Separar equipos en izquierda y derecha
    for (int i = 0; i < N; i++) {
        int d = positions[i];
        if (d == 0) continue; // Si el equipo está en la posición 0, no necesita viaje
        if (d <= L - d) right.push_back(d);  // Mejor moverse en sentido horario
        else left.push_back(L - d);          // Mejor moverse en sentido antihorario
    }

    // Ordenamos de mayor a menor para procesar las posiciones más alejadas primero
    sort(left.rbegin(), left.rend());
    sort(right.rbegin(), right.rend());

    // Función que calcula el tiempo de viaje en cada dirección
    auto compute_time = [&](vector<int>& v) {
        ll t = 0;
        for (int i = 0; i < v.size(); i += K) {
            t += 2 * v[i]; // Ida y vuelta al punto más lejano en este viaje
        }
        return t;
    };

    // Calculamos el tiempo para ambos lados
    time += compute_time(left);
    time += compute_time(right);

    return time;
}
#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...