Enunt
Mircea este pasionat de programare. El a început să rezolve probleme din ce în ce mai grele. Astfel a ajuns la o problemă, care are ca date de intrare un tablou pătratic cu n
linii şi n
coloane, componente tabloului fiind toate numerele naturale distincte de la 1
la n
2
. Pentru a verifica programul pe care l-a scris îi trebuie un fişier care să conţină tabloul respectiv. După ce a creat acest fişier, fratele său, pus pe şotii îi umblă în fişier şi îi schimbă câteva numere consecutive, cu numărul 0
. Când se întoarce Mircea de la joacă constată cu stupoare că nu îi merge programul pentru testul respectiv. După câteva ore de depanare îşi dă seama că programul lui este corect şi că fişierul de intrare are probleme.
Cerința
Scrieţi un program care să-l ajute pe Mircea, găsindu-i cel mai mic şi cel mai mare dintre numerele consecutive schimbate de fratele său.
Date de intrare
În fişierul numere9.in
se dă pe prima linie n
, iar pe următoarele n
linii elementele tabloului, câte n
elemente pe o linie, separate între ele prin câte un spaţiu, după modificările făcute de fratele lui Mircea.
Date de ieșire
În fişierul numere9.out
se va scrie pe un singur rând cu un singur spaţiu între ele numerele cerute (primul fiind cel mai mic).
Restricții și precizări
0<n≤500
- Fratele lui Mircea schimbă cel puţin un număr în fişier.
- Numerele schimbate de fratele lui Mircea sunt mai mici sau cel mult egale cu
60000
.
Exemplu
numere9.in
3 5 0 7 0 0 1 6 9 8
numere9.out
2 4
Explicație
În fişierul de intrare au fost înlocuite cu 0
numerele 2
, 3
, 4
.
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 numere9:
program numere;
var f:text;
n,i,j,nr0,x:longint;
min,max,s,n1,nr1,m:longint;
v:array[0..60000]of byte;
begin
assign(f,'numere9.in');
reset(f);
s:=0;
nr0:=0;
readln(f,n);
for i:=1 to n do
begin
for j:=1 to n do
begin
read(f,x);
if (x<>0)and(x<=60000) then v[x]:=1;
end;
readln(f);
end;
close(f);
{for i:=1 to n*n do write(v[i],' ');
readln; }
if n*n>=60000 then m:=60000 else m:=n*n;
i:=1;
while (v[i]=1)and(i<=m) do inc(i);
min:=i;
i:=m;
while (v[i]=1)and(i>0) do dec(i);
max:=i;
assign(f,'numere9.out');
rewrite(f);
writeln(f,min,' ',max);
close(f);
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 #1374 numere9
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1374 numere9 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!