#include<bits/stdc++.h>
#define rep(i,a,n) for(int i=(a);i<=(n);++i)
#define per(i,a,n) for(int i=(n);i>=(a);--i)
#define SZ(x) ((int)(x).size())
using namespace std;
typedef double db;
typedef long long ll;
typedef pair<int,int> pii;
const int maxn=2e5+10,maxk=3e5+10;
int n,k;
ll f[maxk];
pii a[maxn];
inline void solve(){
scanf("%d%d",&n,&k);
rep(i,1,n) scanf("%d%d",&a[i].first,&a[i].second);
sort(a+1,a+1+n,[&](const pii &x,const pii &y){
return (y.first-1)*x.second>=(x.first-1)*y.second;
});
f[0]=1;
rep(i,1,n){
per(j,1,k)
if(f[j-1]) f[j]=max(f[j],f[j-1]*a[i].first+a[i].second);
}
printf("%lld\n",f[k]);
}
signed main(){
int _=1;
//scanf("%d",&_);
while(_--) solve();
}
为什么会 RE,我懵了