P1080 国王游戏(非高精版)
#include <iostream> #include <algorithm> using namespace std; struct node { int l; int r; int w; }p[1010]; bool cmp(node x,node y) { return x.w < y.w; } int main() { int n,kl,kr; cin>>n; cin>>kl>>kr; for(int i=1;i<=n;i++) { cin>>p[i].l>>p[i].r; p[i].w=p[i].l*p[i].r; } sort(p+1,p+1+n,cmp); long long ans=kl; for(int i=1;i<=n-1;i++) { ans=ans*p[i].l; } ans=ans/p[n].r; cout<<ans; return 0; }
根据数学不等式知识推导,要将大臣的左右手之积由小到大排序,即l*r排序