Submission #1334032

#TimeUsernameProblemLanguageResultExecution timeMemory
1334032kawhietHorses (IOI15_horses)C++20
34 / 100
1596 ms16080 KiB
#include <bits/stdc++.h>
#include "horses.h"
using namespace std;

using i64 = long long;

constexpr int mod = 1e9 + 7;

int n;
vector<int> x, y;

vector<i64> p, a;

bool is(int l, int r) {
    i64 k = y[r];
    for (int i = l + 1; i <= r; i++) {
        k *= x[i];
        if (k > y[l]) {
            return true;
        }
    }
    return false;
}

int solve() {
    p[0] = x[0];
    a[0] = x[0] * y[0] % mod;
    for (int i = 1; i < n; i++) {
        p[i] = p[i - 1] * x[i] % mod;
        a[i] = p[i] * y[i] % mod;
    }
    int ans = 0;
    int pos = 0;
    for (int i = 1; i < n; i++) {
        if (is(pos, i)) {
            pos = i;
        }
    }
    return a[pos];
}

int init(int N, int X[], int Y[]) {
    n = N;
    x.assign(X, X + N);
    y.assign(Y, Y + N);
    p.resize(n);
    a.resize(n);
    return solve();
}

int updateX(int pos, int val) {
    x[pos] = val;
    return solve();
}

int updateY(int pos, int val) {
    y[pos] = val;
    return solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...