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

#181 - C++ 20 de puncte

Se numește secvență într-un vector toate elementele din acel vector cu indici cuprinși între două valori date.
Cerinţa

Se dau n numere naturale, reprezentând elementele unui vector.

Determinați cea mai lungă secvență de elemente ordonate strict crescător din vector. Dacă există mai multe astfel de secvenţe se va determina cea mai din stânga.
Date de intrare

Fişierul de intrare secvcresc.in conţine numărul n şi n valori naturale, reprezentând elementele vectorului. Valorile din fişier pot fi dispuse pe mai multe linii.
Date de ieşire

Fişierul de ieşire secvcresc.out va conţine pe prima linie numerele st și dr, reprezentând indicii de început și de sfârșit ai secvenței determinate.
Restricţii şi precizări

0 < n ≤ 10000
elementele vectorului vor fi mai mici decât 1000000 și sunt numerotate de la 1

Răspunsuri la întrebare

Răspuns de express
5
#include <fstream>
#define INF 2147000000
using namespace std;
int v[10005],n,i,maxx=-INF,sec,st,dr;
int main()
{
    ifstream f("secvcresc.in");
    ofstream g("secvcresc.out");
    f>>n;
    f>>v[1];
    sec=1;
    for(i=2;i<=n;i++)
    {
        f>>v[i];
        if(v[i]>v[i-1])
           {
               sec++;
               if(sec>maxx) maxx=sec,st=i-maxx+1,dr=i;

           }   else sec=1;

    }
    g<<st<<" "<<dr;
    f.close();
    g.close();
    return 0;
}

Alte întrebări interesante