Pagini recente » Cod sursa (job #2604828) | Cod sursa (job #446106) | Cod sursa (job #181998) | Cod sursa (job #1037542) | Cod sursa (job #67641)
Cod sursa(job #67641)
#include <cstdio>
#define maxn 800
#define mod (1<<32)
#define ull long long
#define ui unsigned int
ui dp[maxn][maxn];
unsigned int n;
unsigned int x[maxn];
long long const MOD=4294967296LL;
void citire()
{
freopen("psir.in", "r", stdin);
scanf("%d\n", &n);
for(int i=1;i<=n;++i) scanf("%d ", x+i);
}
void dynamic()
{
int i, j,k;
long long s1,s,s2;
for(i=1;i<n;i++)
for(j=i+1;j<=n;++j)dp[i][j]=1;
for(j=2;j<=n;++j)
for(i=j+1;i<=n;++i)
{
// printf("%d %d\n", j, i);
s1=(long long)x[i]-x[j];
//if(s>0)
{
//printf("%d__ %d %d\n", x[j], x[i], x[i]-x[j]);
for(k=1;k<j;++k)
{
s2=(long long)x[i]-x[k];
s=(long long)s1*s2;
if(s<0)
{
dp[j][i]+=dp[k][j];
// dp[j][i]&=31;
while(dp[j][i]>MOD) dp[j][i]-=MOD;
}
}
}
/*
if(s<0)
{
for(k=1;k<j;++k)
if(x[i]-x[k]>0)
dp[j][i]+=dp[k][j];
}
*/
}
ull sum=0;
for(i=1;i<n;++i)
for(j=i+1;j<=n;++j)
{
sum+=dp[i][j];
while(sum>MOD) sum-=MOD;
}
/*
for(i=1;i<=n;++i)
{
for(j=1;j<=n;++j)printf("%d ", dp[i][j]);
printf("\n");
}
*/
printf("%lld\n", sum);
}
int main()
{
freopen("psir.out", "w", stdout);
citire();
dynamic();
// printf("%lld\n", t);
return 0;
}