# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1021924 | guagua0407 | File Paths (BOI15_fil) | C++17 | 2 ms | 348 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
//#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<int,int>
#define f first
#define s second
#define all(x) x.begin(),x.end()
#define _ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
void setIO(string s) {
freopen((s + ".in").c_str(), "r", stdin);
freopen((s + ".out").c_str(), "w", stdout);
}
const int mxn=1e6+5;
int main() {_
int n,m,k;
cin>>n>>m>>k;
int len;
cin>>len;
len++;
vector<ll> pre(n+1);
vector<int> p(n+1);
for(int i=1;i<=n;i++){
int l;
cin>>p[i]>>l;
pre[i]=pre[p[i]]+l+1;
}
vector<ll> vec(n+1);
for(int i=0;i<=n;i++){
vec[i]=pre[i]+len;
}
sort(all(vec));
for(int i=0;i<m;i++){
int pp,l;
cin>>pp>>l;
int cur=pre[pp]+l+1;
bool tf=false;
while(true){
ll target=k-(cur-pre[pp]);
//cout<<target<<'\n';
int pos=lower_bound(all(vec),target)-vec.begin();
if(pos!=n+1 and vec[pos]==target){
tf=true;
}
if(tf or pp==0) break;
pp=p[pp];
}
cout<<(tf?"YES":"NO")<<'\n';
}
return 0;
}
//maybe its multiset not set
//yeeorz
//laborz
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |