Pagini recente » Cod sursa (job #2093196) | Cod sursa (job #1825436) | Cod sursa (job #134837) | Cod sursa (job #2170648) | Cod sursa (job #592940)
Cod sursa(job #592940)
#include <fstream>
using namespace std;
long long MOD = 1LL << 32;
int N;
long long V[2002], nS[2002];
long long total;
int main()
{
ifstream fin("psir.in");
ofstream fout("psir.out");
fin >> N;
for (int i = 1; i <= N; ++i)
{
fin >> V[i];
nS[i] = 1;
}
total = N * (N - 1) / 2;
for (int i = 3; i <= N; ++i)
{
int less = (V[i - 1] < V[i]), greater = (V[i - 1] > V[i]);
for (int j = i - 2; j >= 1; --j)
{
if (V[j] > V[i]) nS[i] += nS[j] * less;
else nS[i] += nS[j] * greater;
nS[i] %= MOD;
less += (V[j] < V[i]);
greater += (V[j] > V[i]);
}
total += nS[i] - 1;
if (total < 0) total += MOD;
if (total > MOD) total -= MOD;
}
fout << total;
fin.close();
fout.close();
}