Pagini recente » Cod sursa (job #949609) | Cod sursa (job #2798007) | Cod sursa (job #970787) | Cod sursa (job #2294357) | Cod sursa (job #552602)
Cod sursa(job #552602)
# include <algorithm>
# include <cstdio>
# include <vector>
using namespace std ;
const char *FIN = "psir.in", *FOU = "psir.out" ;
const int MAX = 2006 ;
unsigned dp[MAX][MAX], sol ;
vector < int > A, B ;
int N ;
int main ( void ) {
freopen ( FIN, "r", stdin ) ;
scanf ( "%d", &N ) ;
B.push_back ( 0 ) ;
for ( int i = 0, j; i < N; ++i ) {
scanf ( "%d", &j ) ;
A.push_back ( j ) , B.push_back ( j ) ;
}
sort ( A.begin (), A.end () ) ;
A.erase ( unique ( A.begin (), A.end () ), A.end () ) ;
for ( int i = 1; i <= N; ++i ) {
B[i] = lower_bound ( A.begin (), A.end (), B[i] ) - A.begin () + 1 ;
}
for ( int i = 1; i <= N; ++i ) {
for ( int j = 1; j < i ; ++j ) {
dp[i][B[j]] += ( B[i] > B[j] ? dp[j][N] - dp[j][B[i]] : B[i] < B[j] ? dp[j][B[i] - 1] : 0) + 1 ;
}
for ( int j = 2; j <= N; ++j ) {
dp[i][j] += dp[i][j - 1] ;
}
}
for ( int i = 1; i <= N; ++i ) {
sol += dp[i][N] ;
}
fprintf ( fopen ( FOU, "w" ) , "%u", sol ) ;
}