#include <string> #include <iostream> #include <sstream> #include <vector> #include <set> #include <map> #include <queue> #include <numeric> #include <stack> #include <cmath> #include <algorithm> #include <cstring> #include <ctime> #include <climits> #include <stdlib.h> #include <time.h> #include <cassert> #include <map> #include <unordered_set> #include <bitset> #include <list> #include <climits> #include <unordered_map> using namespace std; int main(){ int t; cin >> t; while(t--){ int n,q; cin >> n >> q; vector<pair <long long,long long>> arr(n); int i; for(i=0;i<n;i++){ long long a,b; cin >> a >> b; arr[i]={a,b}; } vector <long long> brr(n); for(i=0;i<n;i++){ if(i==0){ brr[i]=arr[i].first-1; } else{ brr[i]=arr[i].first-arr[i-1].second-1+brr[i-1]; } } for(i=0;i<n;i++){ arr[i].first=arr[i].first-brr[i]; arr[i].second=arr[i].second-brr[i]; } arr[n-1].second=pow(10, 18); while (q--) { long long x; cin >> x; int l=0; int h=n-1; int ans=0; while (l<=h) { int mid=(l+h)/2; if(x>=arr[mid].first && x<=arr[mid].second){ ans=mid; break; } else if(x<arr[mid].first){ h=mid-1; } else{ l=mid+1; } } cout << x+brr[ans] << " " ; } cout << endl; } return 0; //sujan }
Tuesday, January 7, 2020
Sonam Bewafa asks questions
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment