Rezolvare completă PbInfo #1374 numere9

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 n2. 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 Adresa de email.

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!