Informatică, întrebare adresată de NEWB, 9 ani în urmă

Salut! am intalnit o problema in una din variantele de informatica pentru bac din 2009. Suna astfel:

Scrieţi un program C/C++ care citeşte numerele din fişierul date.txt, determină şi
afişează pe ecran numărul de elemente ale celei mai lungi secvenţe ordonate strict
descrescător, formate din valori citite consecutiv din fişier. Alegeţi o metodă de rezolvare
eficientă din punctul de vedere al timpului de executare.

Exemplu: dacă fişierul date.in conţine
5 2 19 4 3 6 3 2 1 0 8


pe ecran se afişează:
5


asta este ceea ce am incercat sa fac:

Anexe:

boiustef: nu cred că este eficient... folosesti vectori... nu poţi da o imagine a problemei, că cred mai era ceva acolo... câte numere poate avea fişierul şi dimensiunea numerelor din fişier
NEWB: fisierul contine cel mult 1000 de numere de cel mult 9 cifre
NEWB: insa nu reusesc sa inteleg care este relevanta informatiei. am nevoie de o explicatie.

Răspunsuri la întrebare

Răspuns de boiustef
1

Răspuns:

#include <iostream>

#include <fstream>

using namespace std;

ifstream fin("date.txt");

int a,b,secv,secvmax;

int main()

{

   fin >> a;

   secv=1; secvmax=1;

   while (fin >> b)

   {

       if (b<a) ++secv;

       else

       {

           if (secv>secvmax) secvmax=secv;

           secv=1;

       }

       a=b;

   }

   cout << secvmax;

}

Explicație:

cred din start se spune că în fişier este cel puţin 1 număr


NEWB: problema este ca secvmax nu va lua valoarea lui secv in cazul in care intalneste numai numere care descresc.
boiustef: ai dreptate... :))) mi+a scăpat această cercetare...
boiustef: sfârşitul codului tr să arate astfel:
if (secv > secvmax) secvmax=secv;
cout << secvmax;
boiustef: când se iese din while (fin >> b) tr de cercetat ca valoarea lui secv .....
boiustef: codul complet redactat:
https://pastebin.com/McTqayRg
NEWB: uimitor! multumesc :)
Alte întrebări interesante