Pagini recente » Cod sursa (job #3187608) | Borderou de evaluare (job #1569410) | Cod sursa (job #1974502) | Cod sursa (job #772322) | Cod sursa (job #612505)
Cod sursa(job #612505)
#include <fstream>
using namespace std;
int N;
unsigned int V[2002], like[2002];
unsigned int pos[2002], result;
int main()
{
ifstream fin("psir.in");
ofstream fout("psir.out");
fin >> N;
for (int i = 1; i <= N; ++i)
{
fin >> V[i];
for (int j = i - 1; j >= 1; --j)
like[i] += (V[i] == V[j]);
pos[i] = i - 1;
unsigned int big = 0, small = 0;
for (int j = i - 1; j >= 1; --j)
{
if (V[j] < V[i])
pos[i] += (pos[j] - like[j] + 1u) * big;
else if (V[j] > V[i])
pos[i] += (pos[j] - like[j] + 1u) * small;
small += (V[j] < V[i]);
big += (V[j] > V[i]);
}
}
for (int i = 1; i <= N; ++i)
result += pos[i];
fout << result;
fin.close();
fout.close();
}