Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #pragma GCC optimize("Ofast")
- #pragma GCC optimize("unroll-loops")
- #pragma GCC optimize ("-ffloat-store")
- #pragma GCC optimize ("-fno-defer-pop")
- typedef long long int ll;
- typedef long double ld;
- #define MAX 100005
- ll sparse_table[2*MAX][21];
- ll A[2*MAX], B[2*MAX], C[2*MAX];
- struct Line {
- ll a, b;
- ll value(ll x){
- return a*x + b;
- }
- };
- bool cmp(const Line &one, const Line &two){
- if(one.a > two.a)return true;
- if(one.a == two.a && one.b > two.b)return true;
- return false;
- };
- void preprocess(ll *ans, ll n){
- for(ll i=0;i<n;i++){
- sparse_table[i][0] = ans[i];
- }
- for(ll j=1;j<=20;j++){
- for(ll i=0;i<n;i++){
- if(i+(1LL<<(j-1)) < n){
- sparse_table[i][j] = min(sparse_table[i][j-1], sparse_table[i+(1LL<<(j-1))][j-1]);
- //cout<<i<<" "<<j<<" "<<sparse_table[i][j]<<endl;
- }
- }
- }
- }
- int main()
- {
- //~ #ifndef ONLINE_JUDGE
- //~ freopen("test_cases/test_case4.txt", "r", stdin);
- //~ freopen("test_cases/test_case4_output.txt", "w", stdout);
- //~ #endif
- ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
- ll n, m;
- cin>>n>>m;
- for(ll i=0;i<n;i++)cin>>A[i];
- for(ll i=0;i<m;i++)cin>>B[i];
- for(ll i=0;i<m;i++)cin>>C[i];
- vector < pair <ll,ll> > vec;
- for(ll i=0;i<n;i++){
- vec.push_back({A[i], i});
- }
- sort(vec.begin(), vec.end());
- vector <Line> lines;
- for(ll i=0;i<m;i++){
- lines.push_back({B[i], C[i]});
- }
- sort(lines.begin(), lines.end(), cmp);
- ll ans[n];
- ll start = 0;
- for(ll i=0;i<n;i++){
- ll x = vec[i].first;
- while(start < (ll) lines.size() - 1){
- if(lines[start].value(x) > lines[start+1].value(x)){
- start++;
- }
- else{
- break;
- }
- }
- ans[vec[i].second] = lines[start].value(x);
- }
- preprocess(ans, n);
- ll q;
- cin>>q;
- while(q--){
- ll l, r;
- cin>>l>>r;
- l--;
- r--;
- ll diff = r-l+1;
- ll val = log2(diff);
- cout<<min(sparse_table[l][val], sparse_table[r-(1LL<<val)+1][val])<<"\n";
- }
- }
Add Comment
Please, Sign In to add comment