Cod sursa(job #2194876)

Utilizator MateiTrandafirMatei Trandafir MateiTrandafir Data 14 aprilie 2018 15:38:29
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include <fstream>

#define N 100001

int v[N], st1[N], st2[N], dr1[N], dr2[N], c[N], s1[N], s2[N], coef[N], p1, p2, n;

int main() {
    std::ifstream in("turnuri4.in");
    std::ofstream out("turnuri4.out");
    int i, j, tmp, count;
    in >> n;
    for (i = 1; i <= n; ++i) in >> v[i];
    s1[0] = s2[0] = 0;
    p1 = p2 = 0;
    for (i = 1; i <= n; ++i) {
        count = 0;
        while (p1 > 0 && v[s1[p1]] < v[i]) {
            c[count] = s1[p1];
            ++count;
            --p1;
        }
        st1[i] = s1[p1];
        st2[i] = s2[p2];
        ++p1;
        s1[p1] = i;
        while (count > 0) {
            --count;
            ++p2;
            s2[p2] = c[count];
        }
    }
    s1[0] = s2[0] = 0;
    p1 = p2 = 0;
    for (i = n; i >= n; --i) {
        count = 0;
        while (p1 > 0 && v[s1[p1]] < v[i]) {
            c[count] = s1[p1];
            ++count;
            --p1;
        }
        dr1[i] = s1[p1];
        dr2[i] = s2[p2];
        ++p1;
        s1[p1] = i;
        while (count > 0) {
            --count;
            ++p2;
            s2[p2] = c[count];
        }
    }
    for (i = 1; i <= n; ++i) coef[i] = dr1[i] - st1[i] - 1;
    for (i = 1; i <= n; ++i) {

    }
    return 0;
}