Advertisement
Horikita_Suzune

Untitled

Jan 1st, 2020
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.41 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<cmath>
  4. #include<algorithm>
  5. using namespace std;
  6. long long fx[200002];
  7. long long a,b,c,n,l,r;
  8. long long binary_search(long long up,long long low){
  9.     //cout<<up<<' '<<low<<'\n';
  10.     if(up!=low){
  11.         if(fx[(up+low)/2]<=r&&fx[(up+low)/2]>=l) return -1;
  12.         else if(fx[(up+low)/2]<l)binary_search(up,(up+low)/2+1);
  13.         else if(fx[(up+low)/2]>r)binary_search((up+low)/2,low);
  14.     }
  15.     else return up;
  16. }
  17. long long func(long long x){
  18.     return a*x*x+b*x+c;
  19. }
  20. int main(){
  21.     cin>>a>>b>>c;
  22.     cin>>n;
  23.     for(int i=-100000;i<=100000;i++){
  24.         fx[i+100000]=func(i);
  25.     }
  26.     sort(fx,fx+200001);
  27.     while(n--){
  28.         cin>>l>>r;
  29.         if(a==0&&b==0){
  30.             if(l<=c&&r>=c)cout<<0<<'\n';
  31.             else cout<<min(abs(c-l),abs(c-r))<<'\n';
  32.         }else{
  33.             long long re=binary_search(200000,0);
  34.             //cout<<re<<'\n';
  35.             //cout<<re<<' '<<fx[re-1]<<' '<<fx[re]<<' '<<fx[re-2]<<'\n';
  36.             if(re==-1)cout<<0<<'\n';
  37.             else{
  38.                 if(re<=200000){
  39.                     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';
  40.                     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';
  41.                 }
  42.                 else{
  43.                     if((fx[re-1]<=r&&fx[re-1]>=l)||(fx[re-2]<=r&&fx[re-2]>=l)){
  44.                         cout<<0<<'\n';
  45.                     }else{
  46.                         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';
  47.                     }
  48.                 }
  49.             }
  50.         }
  51.     }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement