제출 #699956

#제출 시각아이디문제언어결과실행 시간메모리
699956Nuraly_SerikbayFountain (eJOI20_fountain)C++14
100 / 100
358 ms44636 KiB
//#include <bits/stdc++.h>
#include <map>
#include <set>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <queue>
#include <stack>
#include <string>
#include <bitset>
#include <cstdio>
#include <limits>
#include <vector>
#include <climits>
#include <cstring>
#include <cstdlib>
#include <fstream>
#include <numeric>
#include <sstream>
#include <cassert>
#include <iomanip>
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <fstream>
#include <unordered_map>

using namespace std;

#define int long long
#define pb push_back
#define S second
#define F first

const int N = 2e5 + 5;
const int INF = 1e18 - 1;
const int MOD = 1e9 + 7;

int n, d[N];
int q, dp[N][21], g[N][21];

signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> q;
    int ok = 0;
    for (int i = 1; i <= n; ++ i) cin >> d[i] >> dp[i][0];    
   	
    set <pair <int, int>> s;
    
    for (int i = 1; i <= n; ++ i) {
    	while (s.size() && (*s.begin()).F < d[i]) {
    		g[(*s.begin()).S][0] = i;
    		s.erase (s.begin());
    	}
    	s.insert ({d[i], i});
    }
    
    for (int i = 1; i <= 20; ++ i) {
    	for (int j = 1; j <= n; ++ j) {
    		g[j][i] = g[g[j][i - 1]][i - 1];
    		dp[j][i] = dp[j][i - 1] + dp[g[j][i - 1]][i - 1];
    	}
    }
    while (q --) {
    	int pos, val;
    	cin >> pos >> val;
    	for (int i = 19; i >= 0; -- i) {
    		if (dp[pos][i] >= val) continue;
    	//	cout << i << ' ';
    		val -= dp[pos][i];
    		if (val) pos = g[pos][i];
    	}
    //	cout << '\n';
    	cout << pos << '\n';
    }
    
    
    
   	return 0;
}
/*
6 1
4 10
6 8
3 5
4 14
10 9
4 20
2 8
 

*/

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

fountain.cpp: In function 'int main()':
fountain.cpp:47:9: warning: unused variable 'ok' [-Wunused-variable]
   47 |     int ok = 0;
      |         ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...