Cod sursa(job #2816899)

Utilizator LicaMihaiIonutLica Mihai- Ionut LicaMihaiIonut 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;
}