Pagini recente » Cod sursa (job #830894) | Cod sursa (job #2398464) | Cod sursa (job #1429510) | Cod sursa (job #1863698) | Cod sursa (job #67578)
Cod sursa(job #67578)
#include <cstdio>
#define FIN "psir.in"
#define FOUT "psir.out"
#define NMAX 1<<10
int s[NMAX][NMAX], N, P[NMAX];
void read ()
{
scanf ("%d\n", &N);
for (int i = 1; i <= N; ++ i)
scanf ("%d ", P + i);
for (int i = 1; i <= N; ++ i)
s[1][i] = 1;
for (int i = 2; i <= N; ++ i)
s[2][i] = i - 1;
}
void solve ()
{
int cnt;
for (int l = 3; l <= N; ++ l)
for (int i = l; i <= N; ++ i)
{
cnt = 0;
for (int j = i - 1; j >= 1; -- j)
{
if (P[j] > P[i])
++ cnt;
else if (P[j] < P[i])
s[l][i] += cnt * s[l-2][j];
}
cnt = 0;
for (int j = i - 1; j >= 1; -- j)
{
if (P[j] < P[i])
++ cnt;
else if (P[j] > P[i])
s[l][i] += cnt * s[l-2][j];
}
}
int sol = 0;
for (int l = 2; l <= N; ++ l)
for (int i = 2; i <= N; ++ i)
sol += s[l][i];
printf ("%d\n", sol);
}
int
main ()
{
freopen (FIN, "rt", stdin);
freopen (FOUT, "wt", stdout);
read ();
solve ();
return 0;
}