Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define int long long
- const int INF=(int)1e18;
- const double eps=1e-5;
- signed main() {
- ios::sync_with_stdio(0);cin.tie(nullptr);cout.tie(nullptr);
- ///freopen("input.txt","r",stdin);
- ///freopen("output.txt","w",stdout);
- int n;
- cin >> n;
- int dist=0,mn=(int)1e18,mx=-1;
- int speed[n];
- for(int i = 0 ; i < n ; i++)
- {
- cin >> speed[i];
- mn=min(mn,speed[i]);
- mx=max(mx,speed[i]);
- }
- int d[n];
- double tt=0;
- for(int i = 0 ; i < n ; i++)
- {
- cin >> d[i];
- dist+=d[i];
- tt+=1.0*d[i]/speed[i];
- }
- int m;
- cin >> m;
- double limit[m];
- limit[0]=0;
- if(m!=1)
- {
- for(int i = 1 ; i < m ; i++)
- {
- cin >> limit[i];
- }
- }
- int payments[m];
- for(int i=0;i<m;i++)
- {
- cin >> payments[i];
- }
- double time[m];
- for(int i=0;i<m;i++)
- {
- time[i]=0;
- for(int j=0;j<n;j++)
- {
- time[i]+=1.0*d[j]/(speed[j]+limit[i]);
- }
- }
- int q;
- cin >> q;
- while(q--)
- {
- int s,f;
- cin >> s >> f;
- int L=0,R=m;
- int t=f-s;
- if(t>=tt)
- {
- cout << "0\n";
- continue;
- }
- while(R-L>1)
- {
- int m=(R+L)/2;
- if(time[m]>t)
- L=m;
- else
- R=m;
- }
- if(time[R]>t)
- cout << payments[R] << "\n";
- else
- cout << payments[L] << "\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement