제출 #1357139

#제출 시각아이디문제언어결과실행 시간메모리
1357139ezzzay말 (IOI15_horses)C++20
17 / 100
1595 ms14376 KiB
#include "horses.h"
#include <bits/stdc++.h>
using namespace std;

#define pb push_back
using ll = long long;

const ll MOD = 1000000007LL;
const ll LIM = 2000000000LL;

vector<ll> x, y;

static int calc() {
    int N = (int)x.size();

    ll p = x.back();
    int l = N - 1;

    while (l - 1 >= 0 && x[l - 1] <= LIM / p) {
        p *= x[--l];
    }

    ll P = 1;
    for (int i = 0; i < l; i++) {
        P = (__int128)P * x[i] % MOD;
    }

    p = 1;
    ll mx = 1;
    for (int i = l; i < N; i++) {
        p *= x[i];
        mx = max(mx, p * y[i]);
    }

    ll ans = (ll)((__int128)P * (mx % MOD) % MOD);
    return (int)ans;
}

int init(int N, int X[], int Y[]) {
    x.clear();
    y.clear();
    for (int i = 0; i < N; i++) x.pb(X[i]);
    for (int i = 0; i < N; i++) y.pb(Y[i]);
    return calc();
}

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

int updateY(int pos, int val) {
    y[pos] = val;
    return calc();
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…