Cod sursă (job #210321)

Utilizator avatar gabrielm Majeri Constantin-Gabriel gabrielm IP ascuns
Problemă Lanterna Compilator cpp | 0,99 kb
Rundă Arhiva de probleme Status evaluat
Dată 26 feb. 2016 18:41:54 Scor 80
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

unsigned int v[100005];

int main()
{
    ifstream in("lanterna.in");
    // Citesc nr de oameni
    unsigned int n;
    in >> n;

    // Citesc timpii
    for(unsigned int i = 0; i < n; ++i)
        in >> v[i];

    in.close();

    // Sortez timpii
    sort(v, v + n);

    // Daca primul merge cu toti, timpul este suma timpiilor celorlalti
    // cu timpul primului de n - 1 ori.
    unsigned long long int timp = (v[0] * (n - 2));
    for(unsigned int i = 1; i < n; ++i)
        timp += v[i];

    // Caut un timp mai mic
    unsigned long long int timpMinim = timp;

    // Folosesc calatorul 1 si 2 pentru a duce mai rapid oamenii
    for(unsigned int i = n - 2; i >= 2; i -= 2) {
        timp -= v[i] + v[0] - 2 * v[1];

        if(timp < timpMinim)
            timpMinim = timp;
    }

    ofstream out("lanterna.out");
    out << timpMinim;
    out.close();

    return 0;
}