我代码没过自测却全对了
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define double long double
#define re register
#define endl '\n'
#define inf 0x7f7f7f7f7f7f7f7f
const int N=101;
int n,m,d1[N],d2[N],cha[N],id[N];
bool c(int x){
int s1=0,s2=0;
for(int j = 1;j<=n;++j){
if(s1>=m&&s2>=m) return true;
int i=id[j],st=x,mn1=min(m-s1,st/d1[i]),mn2=min(m-s2,st/d2[i]),f=(mn1!=mn2?mn1>mn2:s1<s2);
if(f){
int mn=min(m-s1,st/d1[i]);
st-=mn*d1[i],s1+=mn;
mn=min(m-s2,st/d2[i]);
st-=mn*d2[i],s2+=mn;
}else{
int mn=min(m-s2,st/d2[i]);
st-=mn*d2[i],s2+=mn;
mn=min(m-s1,st/d1[i]);
st-=mn*d1[i],s1+=mn;
}
}
return s1>=m&&s2>=m-1;
}
bool cmp(int x,int y){return (cha[x]!=cha[y]?cha[x]>cha[y]:d1[x]+d2[y]<d1[y]+d2[y]);}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
// freopen("soft.in","r",stdin);
// freopen("soft.out","w",stdout);
//↑以上为初始化 ↑
//------------------------------
cin >> n >> m;
for(int i = 1;i<=n;++i) cin >> d1[i] >> d2[i],id[i]=i,cha[i]=abs(d1[i]-d2[i]);
sort(id+1,id+n+1,cmp);
int l=0,r=1e4+1,mid;
while(l<r){
mid=(l+r)>>1;
if(c(mid)) r=mid;
else l=mid+1;
}
cout << r << endl;
return 0;
}
hack,答案用朋友代码跑出来的