제출 #1308826

#제출 시각아이디문제언어결과실행 시간메모리
1308826ElayV13Fountain (eJOI20_fountain)C++20
0 / 100
375 ms32472 KiB
//g++ -o solmain1 solmain1.cpp
//C:\Users\Asus-1\OneDrive\Desktop
#include <bits/stdc++.h>
using namespace std;

#define int long long
const int INF = 1e18;
int n , q;
int d[100001] , c[100001];
int nxt[20][100001];
int s[20][100001];
signed main()
{
	ios_base::sync_with_stdio();
	cin.tie(0);
	cout.tie(0);
	cin >> n >> q;
	for(int i = 1;i <= n;i++) cin >> d[i] >> c[i];
	for(int i = 1;i <= n;i++) nxt[0][i] = -1;
	for(int i = 1;i <= n;i++){
		s[0][i] = c[i];
		for(int j = i;j <= n;j++){
			if(d[j] > d[i]){
				nxt[0][i] = j;
				break;
			}
		}
	}
	for(int i = 1;i < 20;i++)
	{
		for(int j = 1;j <= n;j++)
		{
			nxt[i][j] = nxt[i - 1][nxt[i - 1][j]];
			int half = nxt[i - 1][j];
			s[i][j] = s[i - 1][j] + s[i - 1][half];
		}
	}
	while(q--){
		int idx , v;
		cin >> idx >> v;
		for(int i = 19;i >= 0;i--){
			if(s[i][idx] <= v){
				v -= s[i][idx];
				if(v > 0)
				idx = nxt[i][idx];
			}
		}
		cout << idx << endl;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...