Cod sursa(job #3241862)

Utilizator AswVwsACamburu Luca AswVwsA Data 5 septembrie 2024 12:34:12
Problema Subsir 2 Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
#include <vector>
#include <map>
#include <algorithm>
#include <cassert>
#define ll long long
using namespace std;

const int NMAX = 5000;

int d[NMAX + 1];
int v[NMAX + 1];

signed main()
{
    ifstream cin("subsir2.in");
    ofstream cout("subsir2.out");
    int n, i, j;
    cin >> n;
    for (i = 1; i <= n; i++)
        cin >> v[i];
    for (i = 1; i <= n; i++)
    {
        int mn = n + 3;
        int mx = -1e7;
        for (j = i - 1; j >= 1; j--)
            if (v[j] <= v[i] and v[j] > mx)
            {
                mn = min(mn, 1 + d[j]);
                mx = max(mx, v[j]);
            }
        if (mn == n + 3)
            mn = 1;
        d[i] = mn;
    }
    int mx = -1e7;
    int ans = n + 3;
    for (i = n; i >= 1; i--)
        if (v[i] > mx)
        {
            ans = min(ans, d[i]);
            mx = v[i];
        }
    cout << ans;
}