Submission #1166152

#TimeUsernameProblemLanguageResultExecution timeMemory
1166152dnnndaEscape Route 2 (JOI24_escape2)C++20
14 / 100
3097 ms112320 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...