Eliminació per parells P84545


Statement
 

pdf   zip

Considereu un conjunt CC amb 2n2n naturals (possiblement repetits), un subconjunt SS de CC amb nn nombres, i una kk entre 0 i nn. Heu de fer nn parells amb els nombres de CC, de manera que cada nombre aparegui a un parell. Després, de kk d’aquests parells us en quedeu el mínim nombre (o un dels dos, si són iguals), i dels altres nkn-k parells us en quedeu el màxim nombre (o un dels dos, si són iguals). El resultat final ha de ser SS.

Per exemple, si n=3n = 3, C={1,2,3,4,4,6}C = \{ 1, 2, 3, 4, 4, 6 \}, S={1,4,4}S = \{ 1, 4, 4 \}, i k=1k = 1, podem quedar-nos amb min(1,6)=1\min(1, 6) = 1, max(3,4)=4\max(3, 4) = 4, i max(2,4)=4\max(2, 4) = 4.

Entrada

L’entrada consisteix en diversos casos, cadascun amb nn i kk, seguits d’una línia amb els 2n2n nombres de CC, seguida s’una línia amb els nn nombres d’SS. Poseu suposar 1n1051 \le n \le 10^5, 0kn0 \le k \le n, que els nombres donats es troben entre 1 i 10810^8, i que SS és un subconjunt de CC.

Sortida

Escriviu una línia per a cada cas. Si no es pot aconseguir SS a partir de CC amb la kk donada, escriviu “NO”. Altrament, escriviu "SI", seguit dels vostres nn parells. Els kk primers parells han de ser els dels mínims, i els altres nkn-k els dels màxims. A part d’això, podeu escriure els parells en qualsevol ordre, tant internament com entre ells. Si hi ha més d’una solució, trieu la que vulgueu, però seguiu estrictament el format dels exemples.

Puntuació

  • Cas A:   Casos on k=0k = 0.

  • Cas B:   Resta de casos.

Information
Author
Salvador Roura
Language
Catalan
Official solutions
C++ Python
User solutions
C++