#include<bits/stdc++.h>
using namespace std;
#define S second
#define F first
#define ll long long
//#define int long long
//#pragma GCC optimize("Ofast, unroll-loop")
//#pragma GCC target("avx,avx2")
#pragma GCC optimize("O3")
#define init(arr,val) memset(arr,val,sizeof arr)
const int inf=0x3f3f3f3f;
const ll inff=0x3f3f3f3f3f3f3f3f;
const int X=1000000007;
//const int X=998244353;
vector<int> que[2005][2005];
ll ans[300005];
vector<pair<int,int>> bus[100005];
int main(){
ios::sync_with_stdio(false), cin.tie(nullptr);
init(ans,0x3f);
int n, T; cin >> n >> T;
for(int i=1 ; i<n ; i++){
int m; cin >> m;
for(int j=0 ; j<m ; j++){
int a, b; cin >> a >> b;
bus[i].push_back({a,b});
}
}
int q; cin >> q;
for(int i=1 ; i<=q; i++){
int l, r; cin >> l >> r;
que[l][r].push_back(i);
}
for(int i=1 ; i<=n ; i++){
for(auto[a1,b1]:bus[i]){
ll t=b1, nxt=inff;
for(int j=i+1 ; j<=n ; j++){
for(int plc:que[i][j]) ans[plc]=min(ans[plc],t-a1);
for(auto[a,b]:bus[j]){
nxt=min(nxt,t+(a+T-t%T)%T+(b-a));
}
//cout << i << ' ' << j << ' ' << t << ' ' << nxt << '\n';
t=nxt, nxt=inff;
}
}
}
for(int i=1 ; i<=q ; i++) cout << ans[i] << '\n';
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |