Rezolvare completă PbInfo #2837 Intervale5

Cerința

Se dă un șir de cel mult un milion de numere naturale din intervalul [0,102]. Se cere să se determine toate perechile distincte formate din termeni ai șirului dat, x și y (y-x≥2), astfel încât să nu existe niciun termen al șirului care să aparțină intervalului (x,y). Dacă nu există nicio astfel de pereche, se afișează mesajul nu exista.

Date de intrare

Fișierul de intrare intervale5.in conține pe prima linie elementele șirului, separate prin spații.

Date de ieșire

Fișierul de ieșire intervale5.out va conține perechile găsite, câte una pe linie, în ordine strict crescătoare, separate printr-un spațiu, iar dacă nu există nicio astfel de pereche, se afișează mesajul nu exista.

Restricții și precizări

  • pentru determinarea numerelor cerute utilizați un algoritm eficient din punctul de vedere al timpului de executare: recomandă evitarea memorării elementelor șirului într-un tablou sau în altă structură de date similară;

Exemplu

intervale5.in

5 9 0 8 10 11 12 13 15 14 6 7 40 10 0 0 5 41 95 7

intervale5.out

0 5
15 40
41 95

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 Intervale5:

#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("intervale5.in");
ofstream fout("intervale5.out");

int v[101];

int main(){
    int x, y;
    while(fin >> x)
        v[x] = 1;
    x = 0;
    while(v[x] == 0)
        x ++;
    int gasit = 0;
    for(y = x + 1; y <= 100 ; y ++)
        if(v[y] == 1)
        {
            if(y -x >= 2)
                fout << x << " " << y << "
", gasit = 1;
            x = y;
        }
    if(! gasit)
        fout << "nu exista
";
    fin.close();
    fout.close();
    return 0;
}

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 #2837 Intervale5

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2837 Intervale5 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!