Reading Books
Explicación
Sea igual a .
Ordenamos el arreglo en orden ascendente. Kotivalo puede leer los libros en el orden , y Justiina puede leerlos en el orden .
Si , Justiina terminaría de leer los libros y tendría que esperar a que Kotivalo termine de leer . Después, Justiina puede leer y Kotivalo puede leer . En total, esto tomará unidades de tiempo.
Si , Kotivalo terminaría de leer antes de que Justiina termine de leer , así que Justiina no tendría que esperar a que Kotivalo termine de leer . Así, esto tomará unidades de tiempo.
Por lo tanto, la respuesta es .
Implementación
Complejidad temporal: .
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ll n;
cin >> n;
vector<ll> books(n);
for (ll i = 0; i < n; i++) { cin >> books[i]; }
ll longest_time = *max_element(books.begin(), books.end());
ll total_time = accumulate(books.begin(), books.end(), 0ll);
cout << max(total_time, longest_time * 2) << "\n";
}import java.io.*;
import java.util.*;
class ReadBook {
public static void main(String[] args) {
Kattio io = new Kattio();
int n = io.nextInt();
long books[] = new long[n];
for (int i = 0; i < n; i++) { books[i] = io.nextLong(); }
long longest_time = Arrays.stream(books).max().getAsLong();
long total_time = Arrays.stream(books).sum();
io.println(Math.max(total_time, longest_time * 2));
io.close();
}
// CodeSnip{Kattio}
}n = int(input())
books = [int(b) for b in input().split()]
longest_time = max(books)
total_time = sum(books)
print(max(total_time, longest_time * 2))