#include #include #include using namespace std; int N,K; int T[2<<17],D[2<<17]; long f(int X) { vectordp(N+1,2e18); dp[0]=0; int id=0; long ns=0; int cnt=0; for(int i=0;iX; id++; } if(cnt==0)dp[i+1]=min(dp[i+1],dp[id]+ns); ns+=D[i]; if(D[i]>X)cnt++; } return dp[N]; } main() { cin>>N>>K; for(int i=0;i>T[i]>>D[i]; int L=-1,R=1e9; while(R-L>1) { int M=(L+R)/2; long now=f(M); if(f(M)<1e18)R=M; else L=M; } cout<