Rezolvare completă PbInfo #1085 Loto

La Loteria Naţională există N bile inscripţionate cu numere naturale, nenule, distincte de cel mult 4 cifre. Şeful de la loterie primeşte o cutie în care se află cele 6 bile extrase la ultima rundă, restul bilelor neextrase fiind puse într-un seif. Deoarece are o fire poznaşă, el scoate din cutie bila pe care este înscris numărul cel mai mic şi o păstrează în buzunarul hainei sale. În locul ei va pune o bilă neextrasă, aflată în seif, având numărul cel mai apropiat de aceasta. Apoi continuă operaţia şi scoate din cutie şi bila pe care este înscris numărul maxim extras iniţial, pe care o va pune în celălalt buzunar al său. De asemenea o va înlocui cu o altă bilă neextrasă iniţial, aflată în seif, având numărul cel mai apropiat de aceasta.

Cerinţă

Realizaţi un program care afişează în ordine crescătoare numerele de pe bilele aflate în cutie după modificările făcute de şef.

Date de intrare

Fișierul de intrare loto.in conține numărul natural N, pe a doua linie cele N numere naturale scrise pe bile, iar pe a treia linie cele 6 numere naturale scrise pe bilele extrase de angajaţii loteriei. Valorile scrise pe aceeaşi linie sunt separate prin spaţii.

Date de ieșire

Fișierul de ieșire loto.out se vor afişa pe prima linie, separate prin câte un spaţiu, cele 6 numere obţinute în cutie după modificările făcute de şef, în ordine crescătoare.

Restricții și precizări

  • 8 < N < 1000
  • Dacă o bilă poate fi înlocuită cu două bile la fel de apropiate de ea, atunci aceasta se va înlocui cu bila având numărul mai mare.
  • Pentru datele de test, atât bila cu numărul cel mai mic, cât şi bila cu numărul cel mai mare pot fi înlocuite cu alte bile.

Exemplul 1

loto.in

10
231 212 32 123 453 675 1321 54 67 567
212 32 67 567 675 1321

loto.out

54 67 212 453 567 675

Explicație

Şeful a înlocuit bila 32 cu bila 54 şi bila 1321 cu bila având numărul cel mai apropiat de ea, adică 453.

Exemplul 2

loto.in

12
3 4 6 7 8 9 2 1 10 18 22 26
2 9 3 4 22 6

loto.out

1 3 4 6 9 26

Explicație

Şeful a înlocuit bila 2 cu bila 1. Apoi a înlocuit bila 22 cu bila 26 (18 este la fel de apropiat ca şi 26 de bila 22, dar 26 este mai mare).

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Loto:

var  i,j,n,mx,mn,max,min,x:longint;
     a:array[0..10000]of boolean;
     b:array[1..6]of integer;

begin
 assign(input,'loto.in'); reset(input);
 assign(output,'loto.out');rewrite(output);
 readln(n);
 fillchar(a,sizeof(a),false);
 for i:=1 to n do begin
    read(x);a[x]:=true;
 end;

 max:=0; min:=10000; mx:=0;mn:=0;
 for i:=1 to 6 do begin
   read(b[i]); a[b[i]]:=false;
   if b[i]<min then begin min:=b[i]; mn:=i; end;
   if b[i]>max then begin max:=b[i]; mx:=i; end;
 end;
 i:=min; j:=min;
 repeat
   if i<10000 then inc(i);
   if j>1 then dec(j)
 until a[i] or a[j];
 if a[i] then b[mn]:=i else b[mn]:=j;
 a[b[mn]]:=false;
 i:=max; j:=max;
 repeat
   if i<10000 then inc(i);
   if j>1 then dec(j)
 until a[i] or a[j];
 if a[i] then b[mx]:=i else b[mx]:=j;

 for i:=1 to 5 do
   for j:=i+1 to 6 do
     if b[i]>b[j] then begin
      b[i]:=b[i]+b[j];
      b[j]:=b[i]-b[j];
      b[i]:=b[i]-b[j];
     end;

 for i:=1 to 5 do write(b[i],' ');
 writeln(b[6]);
 close(output);
end.

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #1085 Loto

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1085 Loto de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!