Pagini recente » Cod sursa (job #1971635) | Cod sursa (job #2923032) | Cod sursa (job #2486817) | Cod sursa (job #1232741) | Cod sursa (job #1346365)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream in("psir.in");
ofstream out("psir.out");
const int nmax = 2006;
const long long mod = 4294967296;
int v[nmax], n, p, pozin[nmax], poz[nmax], first;
long long rasp, d[nmax][nmax];
bool compar(int a, int b)
{
return v[a]<v[b];
}
int main(){
int player_unu=0;
in>>n;
for(int i = 1; i<=n; i++)
{
in>>v[i];
pozin[i] = i;
}
sort(pozin + 1, pozin + n + 1, compar);
for(int i = 1; i<=n; i++)
{
first++;
poz[pozin[i]] = first;
while(v[pozin[i]]==v[pozin[i + 1]])
poz[pozin[++i]] = first;
}
for(int i = 2; i<=n; i++)
{
for(int j = 1; j<i; j++)
{
if(v[j]>v[i])
d[i][poz[j]] = (d[i][poz[j]] + d[j][1] - d[j][poz[i]] + mod) % mod;
if(v[j]<v[i])
d[i][poz[j]] = (d[i][poz[j]] + d[j][poz[i] + 1]) % mod;
}
for(int j = 1; j<i; j++)
d[i][poz[j]]++;
for(int j = first; j>=1; j--)
d[i][j] = (d[i][j] + d[i][j + 1]) % mod;
}
for(int i = 1; i<=n; i++)
rasp = ( rasp + d[i][1] ) % mod;
out<<rasp<<'\n';
return player_unu;
}