Cod sursa(job #2816899)
Utilizator | Data | 12 decembrie 2021 14:11:40 | |
---|---|---|---|
Problema | Subsir 2 | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 1.84 kb |
#include<cstdio>
#define dim 1 << 10
int N, A[dim], L[dim], C[dim];
void read_solve()
{
freopen("subsiruri.in", "r", stdin);
scanf("%d", &N);
int i, j, max, cate;
L[1] = C[1] = 1;
for(i=1; i<=N; ++i)
{
scanf("%d", A + i);
for(j=1, max=0; j<i; ++j)
if(A[j] < A[i])
{
if(L[j] > max)
{
max = L[j], cate = C[j];
if(cate >= 9901)
cate -= 9901;
}
else if(L[j] == max)
{
cate += C[j];
if(cate >= 9901)
cate -= 9901;
}
}
if(!max)
C[i] = L[i] = 1;
else
C[i] = cate, L[i] = max + 1;;
}
}
void write()
{
freopen("subsiruri.out", "w", stdout);
int i, max = 0, cate;
for(i=1; i<=N; ++i)
if(L[i] > max)
{
max = L[i], cate = C[i];
if(cate >= 9901)
cate -= 9901;
}
else if(L[i] == max)
{
cate += C[i];
if(cate >= 9901)
cate -= 9901;
}
printf("%d\n%llu", max, cate);
}
int main()
{
read_solve();
write();
fclose(stdin); fclose(stdout);
return 0;
}