Pagini recente » Cod sursa (job #346006) | Cod sursa (job #2682584) | Cod sursa (job #2449987) | Cod sursa (job #2794479) | Cod sursa (job #3003368)
#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;
}