Pagini recente » Cod sursa (job #1406059) | Cod sursa (job #2188862) | Cod sursa (job #1407465) | Cod sursa (job #905555) | Cod sursa (job #67562)
Cod sursa(job #67562)
#include <cstdio>
#define maxn 1024
#define mod (1<<32)
#define ull long long
#define ui unsigned int
ui dp[maxn][maxn];
unsigned int n;
unsigned int x[maxn];
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];
}
*/
}
int sum=0;
for(i=1;i<n;++i)
for(j=i+1;j<=n;++j)
sum+=dp[i][j]&31;
/*
for(i=1;i<=n;++i)
{
for(j=1;j<=n;++j)printf("%d ", dp[i][j]);
printf("\n");
}
*/
printf("%u\n", sum);
}
int main()
{
freopen("psir.out", "w", stdout);
citire();
dynamic();
return 0;
}