Cod sursa(job #3003368)

Utilizator C_R_I_S_T_I_2_3Cristi Gavrila C_R_I_S_T_I_2_3 Data 15 martie 2023 18:05:34
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>
#define MOD 9901    

using namespace std;

ifstream fin("subsiruri.in");
ofstream fout("subsiruri.out");
long long n, sol1, sol2;
long long v[1005], dp[1005], nr[1005];
int main()
{
    fin >> n;
    for (int i = 1; i <= n; i ++)
        fin >> v[i];

    for (int i = 1; i <= n; i ++)
    {
        long long maxim = 0;
        for(int j = 1; j < i; j ++)
            if(v[i] > v[j])
                maxim = max(dp[j], maxim);
        dp[i] = maxim + 1;
        sol1 = max(sol1, dp[i]);
    }

    for(int i = 1; i <= n; i ++)
    {
        for(int j = 1; j < i; j ++)
            if (v[i] > v[j] && dp[i] == dp[j] + 1)
                nr[i] += nr[j], nr[i] = nr[i] % MOD;
        if(nr[i] == 0)
            nr[i] = 1;
        if(dp[i] == sol1)
            sol2 += nr[i], sol2 = sol2 % MOD;
    }

    fout << sol1 << '\n' << sol2 % MOD;
    return 0;
}