张克我做完了
struct P{
int r,h;
bool operator<(const P&x)const{
return r>x.r;
}
}ve[N];
int f[N];
void solve(){
int n,k; cin>>n>>k;
for(int i=0;i<n;i++){
int r,h; cin>>r>>h;
ve[i]={r,h};
}
sort(ve,ve+n);
for(int i=1;i<=n;i++){
auto [r,h]=ve[i-1];
for(int j=min(i,k);j>=1;j--){
if(j==1) f[j]=max(f[j],f[j-1]+2*r*h+r*r);
else f[j]=max(f[j],f[j-1]+2*r*h);
}
}
cout<<f[k];
}
:)