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 .
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!