Mai intai trebuie sa te autentifici.
Cod sursa(job #2554079)
| Utilizator | Data | 22 februarie 2020 16:05:59 | |
|---|---|---|---|
| Problema | Subsir crescator maximal | Scor | 45 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 1.08 kb |
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
vector < int > v;
int a[100005], prec[100005];
int main()
{
int n, i, st, dr, mij, r, x0, x1, x2, x3, x4, y;
fin >> n;
for ( i = 1 ; i <= n ; i++ ) fin >> a[i];
v.push_back ( 1 );
for ( i = 2 ; i <= n ; i++ )
{
if ( a[i] > a[v[v.size()-1]] ) prec[i] = v[v.size()-1], v.push_back ( i );
else
{
st = 0;
dr = v.size() - 1;
r = dr;
while ( st <= dr )
{
mij = ( st + dr ) / 2;
if ( a[v[mij]] > a[i] ) r = mij, dr = mij - 1;
else st = mij + 1;
}
v[r] = i;
if ( r == 0 ) prec[r] = -1;
else prec[r] = v[r-1];
x0 = v[0];
x1 = v[1];
x2 = v[2];
x3 = v[3];
x4 = v[4];
y = v.size();
}
}
y = v.size();
fout << v.size() << '\n';
return 0;
}
