제출 #963520

#제출 시각아이디문제언어결과실행 시간메모리
963520ONEHUNDREDPUSHUPSFountain (eJOI20_fountain)C++17
100 / 100
274 ms43880 KiB
#include<bits/stdc++.h>
#define sz size()
#define ll long long
#define t s.begin()
using namespace std;
const ll N = 100100;
const ll INF = 1e18;
ll up[N][20], sum[N][20];
void solve()
{
    ll n, q, i, j, k;
    cin >> n >> q;
    vector<ll> d(n + 5, INF), c(n + 5, INF);

    for(i = 1; i <= n; ++i)
    {
        cin >> d[i] >> c[i];
    }

    set<pair<ll, int>> s;

    for(i = 1; i <= n; ++i)
    {
        while(s.sz && (*t).first < d[i])
        {
            up[(*t).second][0] = i;
            s.erase(t);
        }
        s.insert({d[i], i});
    }

    for(i = n; i >= 1; --i)
    {
        sum[i][0] = c[up[i][0]];
        for(j = 1; j < 20; ++j)
            up[i][j] = up[up[i][j - 1]][j - 1],
            sum[i][j] = sum[i][j - 1] + sum[up[i][j - 1]][j - 1];
    }

//    for(i = 1; i <= n; ++i)
//        cout << up[i][0] << ' ';
//    return;

    while(q--)
    {
        ll r, v;
        cin >> r >> v;
        v -= c[r];
        for(j = 19; j >= 0; --j)
        {
            if(sum[r][j] && sum[r][j] <= v)
            {
                v -= sum[r][j];
                r = up[r][j];
            }
        }
        if(v > 0) r = up[r][0];
        cout << r << '\n';
    }


}

signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    solve();
}

컴파일 시 표준 에러 (stderr) 메시지

fountain.cpp: In function 'void solve()':
fountain.cpp:11:20: warning: unused variable 'k' [-Wunused-variable]
   11 |     ll n, q, i, j, k;
      |                    ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...