답안 #1059040

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1059040 2024-08-14T16:23:33 Z andrei_iorgulescu 말 (IOI15_horses) C++14
17 / 100
1236 ms 42324 KB
#include <bits/stdc++.h>
#include "horses.h"

using namespace std;

using ll = long long;

int modulo = (int)1e9 + 7;

int x[500005], y[500005];
int n;
set<int> grx;
int aint[2000005];

void build(int nod, int l, int r)
{
    if (l == r)
        aint[nod] = y[l];
    else
    {
        int mij = (l + r) / 2;
        build(2 * nod,l,mij);
        build(2 * nod + 1,mij + 1,r);
        aint[nod] = max(aint[2 * nod], aint[2 * nod + 1]);
    }
}

void update(int nod, int l, int r, int pos, int val)
{
    if (l == r)
        aint[nod] = val;
    else
    {
        int mij = (l + r) / 2;
        if (pos <= mij)
            update(2 * nod,l,mij,pos,val);
        else
            update(2 * nod + 1,mij + 1,r,pos,val);
        aint[nod] = max(aint[2 * nod], aint[2 * nod + 1]);
    }
}

int query(int nod, int l, int r, int st, int dr)
{
    if (r < st or dr < l)
        return 0;
    if (st <= l and r <= dr)
        return aint[nod];
    int mij = (l + r) / 2;
    return max(query(2 * nod,l,mij,st,dr), query(2 * nod + 1,mij + 1,r,st,dr));
}

int solve()
{
    vector<pair<ll, pair<int,int>>> candi;
    vector<int> depus;
    ll prd = 1;
    int r = n;
    while (!grx.empty() and prd < (int)1e9)
    {
        int l = *grx.rbegin();
        candi.push_back({x[l], {l,r}});
        depus.push_back(l);
        grx.erase(l);
        prd *= x[l];
        r = l - 1;
    }
    if (prd < (int)1e9 and r >= 1)
        candi.push_back({1,{1,r}});
    reverse(candi.begin(),candi.end());
    for (int i = 0; i + 1 < candi.size(); i++)
        candi[i + 1].first *= candi[i].first;
    __int128 ans = 0;
    for (auto it : candi)
    {
        __int128 prr = it.first;
        __int128 prr2 = query(1,1,n,it.second.first,it.second.second);
        prr *= prr2;
        ans = max(ans,prr);
    }
    for (auto it : depus)
        grx.insert(it);
    ans %= modulo;
    return ans;
}

int init(int N, int X[], int Y[])
{
    n = N;
    for (int i = 1; i <= n; i++)
        x[i] = X[i - 1], y[i] = Y[i - 1];
    for (int i = 1; i <= n; i++)
        if (x[i] > 1)
            grx.insert(i);
    build(1,1,n);
    return solve();
}

int updateX(int pos, int val)
{
    pos++;
    if (x[pos] > 1)
        grx.erase(pos);
    x[pos] = val;
    if (x[pos] > 1)
        grx.insert(val);
    return solve();
}

int updateY(int pos, int val)
{
    pos++;
    update(1,1,n,pos,val);
    return solve();
}

Compilation message

horses.cpp: In function 'int solve()':
horses.cpp:71:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, std::pair<int, int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   71 |     for (int i = 0; i + 1 < candi.size(); i++)
      |                     ~~~~~~^~~~~~~~~~~~~~
horses.cpp:84:12: warning: conversion from '__int128' to 'int' may change value [-Wconversion]
   84 |     return ans;
      |            ^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 4444 KB Output is correct
2 Correct 0 ms 4540 KB Output is correct
3 Correct 0 ms 4444 KB Output is correct
4 Correct 0 ms 4444 KB Output is correct
5 Correct 0 ms 4444 KB Output is correct
6 Correct 0 ms 4444 KB Output is correct
7 Correct 0 ms 4444 KB Output is correct
8 Correct 1 ms 4440 KB Output is correct
9 Correct 0 ms 4444 KB Output is correct
10 Correct 1 ms 4452 KB Output is correct
11 Correct 0 ms 4444 KB Output is correct
12 Correct 0 ms 4444 KB Output is correct
13 Correct 0 ms 4444 KB Output is correct
14 Correct 0 ms 4444 KB Output is correct
15 Correct 0 ms 4444 KB Output is correct
16 Correct 0 ms 4444 KB Output is correct
17 Correct 1 ms 4444 KB Output is correct
18 Correct 0 ms 4444 KB Output is correct
19 Correct 0 ms 4444 KB Output is correct
20 Correct 0 ms 4444 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 4444 KB Output is correct
2 Correct 0 ms 4444 KB Output is correct
3 Correct 0 ms 4444 KB Output is correct
4 Correct 1 ms 4444 KB Output is correct
5 Correct 0 ms 4444 KB Output is correct
6 Correct 0 ms 4444 KB Output is correct
7 Correct 0 ms 4444 KB Output is correct
8 Correct 0 ms 4444 KB Output is correct
9 Correct 0 ms 4444 KB Output is correct
10 Correct 0 ms 4548 KB Output is correct
11 Correct 0 ms 4444 KB Output is correct
12 Correct 0 ms 4444 KB Output is correct
13 Correct 0 ms 4452 KB Output is correct
14 Correct 0 ms 4444 KB Output is correct
15 Correct 0 ms 4444 KB Output is correct
16 Correct 0 ms 4444 KB Output is correct
17 Correct 1 ms 4444 KB Output is correct
18 Correct 1 ms 4444 KB Output is correct
19 Correct 1 ms 4444 KB Output is correct
20 Correct 1 ms 4444 KB Output is correct
21 Runtime error 3 ms 8796 KB Execution killed with signal 11
22 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1236 ms 42324 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 4444 KB Output is correct
2 Correct 0 ms 4444 KB Output is correct
3 Correct 0 ms 4444 KB Output is correct
4 Correct 0 ms 4444 KB Output is correct
5 Correct 0 ms 4444 KB Output is correct
6 Correct 0 ms 4444 KB Output is correct
7 Correct 0 ms 4444 KB Output is correct
8 Correct 1 ms 4444 KB Output is correct
9 Correct 1 ms 4444 KB Output is correct
10 Correct 0 ms 4544 KB Output is correct
11 Correct 0 ms 4444 KB Output is correct
12 Correct 0 ms 4444 KB Output is correct
13 Correct 1 ms 4444 KB Output is correct
14 Correct 1 ms 4444 KB Output is correct
15 Correct 0 ms 4444 KB Output is correct
16 Correct 1 ms 4444 KB Output is correct
17 Correct 1 ms 4444 KB Output is correct
18 Correct 1 ms 4444 KB Output is correct
19 Correct 1 ms 4444 KB Output is correct
20 Correct 0 ms 4444 KB Output is correct
21 Runtime error 3 ms 8748 KB Execution killed with signal 11
22 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 4444 KB Output is correct
2 Correct 0 ms 4444 KB Output is correct
3 Correct 0 ms 4444 KB Output is correct
4 Correct 1 ms 4444 KB Output is correct
5 Correct 0 ms 4444 KB Output is correct
6 Correct 0 ms 4444 KB Output is correct
7 Correct 1 ms 4440 KB Output is correct
8 Correct 1 ms 4444 KB Output is correct
9 Correct 0 ms 4444 KB Output is correct
10 Correct 0 ms 4444 KB Output is correct
11 Correct 1 ms 4444 KB Output is correct
12 Correct 0 ms 4444 KB Output is correct
13 Correct 0 ms 4444 KB Output is correct
14 Correct 0 ms 4444 KB Output is correct
15 Correct 0 ms 4444 KB Output is correct
16 Correct 0 ms 4444 KB Output is correct
17 Correct 0 ms 4444 KB Output is correct
18 Correct 0 ms 4444 KB Output is correct
19 Correct 0 ms 4444 KB Output is correct
20 Correct 1 ms 4444 KB Output is correct
21 Runtime error 3 ms 8796 KB Execution killed with signal 11
22 Halted 0 ms 0 KB -