Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstdlib>
- #include<cmath>
- #include<algorithm>
- using namespace std;
- long long fx[200002];
- long long a,b,c,n,l,r;
- long long binary_search(long long up,long long low){
- //cout<<up<<' '<<low<<'\n';
- if(up!=low){
- if(fx[(up+low)/2]<=r&&fx[(up+low)/2]>=l) return -1;
- else if(fx[(up+low)/2]<l)binary_search(up,(up+low)/2+1);
- else if(fx[(up+low)/2]>r)binary_search((up+low)/2,low);
- }
- else return up;
- }
- long long func(long long x){
- return a*x*x+b*x+c;
- }
- int main(){
- cin>>a>>b>>c;
- cin>>n;
- for(int i=-100000;i<=100000;i++){
- fx[i+100000]=func(i);
- }
- sort(fx,fx+200001);
- while(n--){
- cin>>l>>r;
- if(a==0&&b==0){
- if(l<=c&&r>=c)cout<<0<<'\n';
- else cout<<min(abs(c-l),abs(c-r))<<'\n';
- }else{
- long long re=binary_search(200000,0);
- //cout<<re<<'\n';
- //cout<<re<<' '<<fx[re-1]<<' '<<fx[re]<<' '<<fx[re-2]<<'\n';
- if(re==-1)cout<<0<<'\n';
- else{
- if(re<=200000){
- if((fx[re-1]<=r&&fx[re-1]>=l)||(fx[re-2]<=r&&fx[re-2]>=l)||(fx[re]<=r&&fx[re]>=l))cout<<0<<'\n';
- else cout<<min(min(min(abs(fx[re-1]-l),abs(fx[re-1]-r)),min(abs(fx[re]-l),abs(fx[re]-r))),min(abs(fx[re-2]-l),abs(fx[re-2]-r)))<<'\n';
- }
- else{
- if((fx[re-1]<=r&&fx[re-1]>=l)||(fx[re-2]<=r&&fx[re-2]>=l)){
- cout<<0<<'\n';
- }else{
- cout<<min(min(abs(fx[re-1]-l),abs(fx[re-1]-r)),min(abs(fx[re-2]-l),abs(fx[re-2]-r)))<<'\n';
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement