Cod sursa(job #592940)

Utilizator darrenRares Buhai darren Data 31 mai 2011 16:47:37
Problema P-sir Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#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();
}