#include using namespace std; typedef long long ll; signed main(){ ios::sync_with_stdio(false); cin.tie(0); cout << fixed << setprecision(20); ll n,m; cin>>n>>m; ll a[n]; for(int i=0;i>a[i]; array x[n]; for(int i=0;i>t>>h; t--; if(a[t] <= h){ cout << -1 << endl; return 0; } x[i] = {t,h}; } sort(x,x+m); ll low = -1,up=1e9+10; while(up-low>1){ ll mid = (up+low)/2; priority_queue la; priority_queue,greater> sm; ll sum = 0; ll inc = 0; for(int i=0;i=0){ sum += ret; inc++; } else{ la.push(ret); } } int now = 0; bool pos = true; ll dec = 0; for(int i=0;i= a[i]){ pos = false; break; } while(now= -(i+1)*mid){ inc++; ll p = la.top(); la.pop(); sum += p+(i+1)*mid; } while(sm.size() && sm.top() <= (i+1)*mid){ dec--; ll p = sm.top(); sm.pop(); sum -= (i+1)*mid - p; } } //cerr << mid << endl; if(pos){ up = mid; } else low = mid; } cout << up << endl; }