👤

Buna!
Ma poate ajuta cineva cu problema aceasta?

#2837 Intervale5



Enunț
Soluții
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
Multumesc!


Răspuns :

Răspuns:

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("intervale5.in");

ofstream g("intervale5.out");

int v[102], i, x, y, gasit, num;

int main()

{

   while (f >> num)

       ++v[num];

   i=0; while (v[i]==0) ++i;

   while (i<99)

   {

      while (v[i]!=0 && i<99) ++i;

      if (i<100)

      {

          x=i-1;

          while (v[i]==0 && i<101) ++i;

          if (i<101)

          {

              y=i;

              if (y-x>=2)

              {g << x << " " << y << "\n";

              gasit=1;}

          }

      }

   }

   if (gasit==0) g << "nu exista";

}

Explicație:

dacă ai neclarităţi, întreabă, dar mai întîi stăruete să înţelegi logica

Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de sprijin, nu ezitați să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la favorite pentru acces rapid.


Wix Learning: Alte intrebari