제출 #709905

#제출 시각아이디문제언어결과실행 시간메모리
709905ssense말 (IOI15_horses)C++17
0 / 100
1574 ms10512 KiB
#include <bits/stdc++.h>
#include "horses.h"

using namespace std;

#define MOD 1000000009

int ng;
vector<int> xg;
vector<int> yg;

int init(int n, int* x, int* y)
{
    ng = n;
    for(int i = 0; i < n; i++)
    {
        xg.push_back(x[i]);
        yg.push_back(y[i]);
    }
    int produs = 1;
    int now = ng-1;
    for(; now >= 0; now--)
    {
        produs*=xg[now];
        if(produs >= 1e9)
        {
            break;
        }
    }
    now = max(now, 0);
    long long mx = 0, idx = 0;
    int pr = 1;
    for(int i = now; i < ng; i++)
    {
        pr*=xg[i];
        if(mx < pr*yg[i])
        {
            mx = pr*yg[i];
            idx = i;
        }
    }
    mx%=MOD;
    for(int i = 0; i < idx-1; i++)
    {
        mx*=xg[i];
        mx%=MOD;
    }
    return (int)mx;
}

int updateX(int pos, int val)
{
    xg[pos] = val;
    int produs = 1;
    int now = ng-1;
    for(; now >= 0; now--)
    {
        produs*=xg[now];
        if(produs >= 1e9)
        {
            break;
        }
    }
    now = max(now, 0);
    long long mx = 0, idx = 0;
    int pr = 1;
    for(int i = now; i < ng; i++)
    {
        pr*=xg[i];
        if(mx < pr*yg[i])
        {
            mx = pr*yg[i];
            idx = i;
        }
    }
    mx%=MOD;
    for(int i = 0; i < idx-1; i++)
    {
        mx*=xg[i];
        mx%=MOD;
    }
    return (int)mx;
}

int updateY(int pos, int val)
{
    yg[pos] = val;
    int produs = 1;
    int now = ng-1;
    for(; now >= 0; now--)
    {
        produs*=xg[now];
        if(produs >= 1e9)
        {
            break;
        }
    }
    now = max(now, 0);
    long long mx = 0, idx = 0;
    int pr = 1;
    for(int i = now; i < ng; i++)
    {
        pr*=xg[i];
        if(mx < pr*yg[i])
        {
            mx = pr*yg[i];
            idx = i;
        }
    }
    mx%=MOD;
    for(int i = 0; i < idx-1; i++)
    {
        mx*=xg[i];
        mx%=MOD;
    }
    return (int)mx;
}
#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...