#include using namespace std; #include #include #include #include #include template inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; } template inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; } #define rep(i,n) for (int i = 0; i < (n); ++i) typedef long long ll; typedef long double ld; typedef unsigned long long ull; using P=pair; const ll INF=1001001001; const int mod=998244353; void solve(){ int n,d; cin>>n>>d; vectorp(n+1),q(n+1); for(int i=1;i<=n;i++)cin>>p[i]>>q[i]; auto f=[&](int mid){ vector>dp(d+1,vector(n+1,-INF)); rep(i,d){ for(int j=1;j<=n;j++){ for(int k=1;k<=n;k++){ if(j!=k&&(i==0?0:dp[i][j])-p[i]>=mid){ chmax(dp[i+1][k],(i==0?0:dp[i][j])+q[k]-p[k]); } } } } rep(i,n){ if(dp[n][i]>=mid){return true;} } return false; }; int l=-INF,r=0; while(r-l>1){ int mid=(l+r)/2; if(f(mid)){l=mid;} else{r=mid;} } cout<