CB

Time limit: 0.5s Memory limit: 64MB Input: cb.in Output: cb.out

Se dau două numere naturale nn și mm și un șir de nn numere naturale diferite ss. Să se construiască un șir de mm numere naturale care să respecte simultan următoarele condiții:

  1. Toate numerele din șirul construit trebuie să aparțină intervalului [1,109][1, 10^9].
  2. Elemente șirului construit trebuie să se afle în ordine crescătoare, adică a1a2...ama_1 \leq a_2 \leq ... \leq a_m, unde s-a notat cu aa șirul construit.
  3. Considerăm următorul algoritm de căutare binară:
int binary_search(const vector<int>& a, int target) {
	int left = 0, right = (int)a.size() - 1;
	int counter = 0;
	while (left <= right) {
		int mid = (left + right) / 2;
		if (a[mid] == target) {
			return counter;
		}
		counter += 1;
		if (a[mid] < target) {
			left = mid + 1;
		} else {
			right = mid - 1;
		}
	}
	return counter;
}

Dacă acest algoritm este aplicat pe șirul construit, iar pe rând se caută fiecare număr din șirul ss, suma valorilor returnate de funcția binary_search trebuie să fie minimă.

Date de intrare

Prima linie a fișierului de intrare conține două numere naturale nn și mm, reprezentând numărul de elemente din șirul ss, respectiv numărul de elemente al șirului care trebuie construit.
A doua linie conține nn numere naturale diferite s1,s2,...,sns_1, s_2, . . . , s_n, reprezentând elementele șirului ss.

Date de ieșire

Programul trebuie să afișeze pe o singură linie șirul de mm numere naturale, separate prin câte un spațiu, care reprezintă soluția problemei, respectând condițiile enunțate.

Restricții și precizări

  • 1n,m21051 \leq n, m \leq 2 \cdot 10^5
  • 1s[i]1091 \leq s[i] \leq 10^9, pentru 1in1 \leq i \leq n
  • Cele nn numere naturale din șirul ss sunt diferite, dar cele mm din șirul rezultat nu trebuie să fie neapărat diferite.
# Puncte Restricții
1 15 1n,m51 \leq n, m \leq 5 și 1s[i]101 \leq s[i] \leq 10
2 30 mnm \leq n (împreună cu celelalte constrângeri generale)
3 40 Șirul ss este sortat strict crescător, adică s1<s2<<sns_1 < s_2 < · · · < s_n
4 15 1n,m21051 \leq n, m \leq 2 \cdot 10^5 și 1s[i]1091 \leq s[i] \leq 10^9

Exemplu

cb.in

3 7
6 3 10

cb.out

1 3 3 6 6 10 10

Explicație

Funcția binary_search va returna valorile 0,10, 1 şi 11 pentru numerele 6,36, 3 şi 1010 din șirul ss, conducând la o sumă minimă a valorilor returnate.

Log in or sign up to be able to send submissions!