题目描述
题目描述
33DAI 梦到自己变成了孙悟空,来到了蟠桃园,蟠桃园里一共还有 �n 个桃子。
初始 33DAI 只能吃得下一个桃子。
每个桃子有两个属性,第 �i 个桃子的属性为:��ai,��bi。分别表示吃掉这个桃子后,33DAI 的开心程度会增加 ��ai,并且由于开胃效果很好,能让 33DAI 多吃下 ��bi 个桃子。
请问 33DAI 的开心程度最高能到多少。
输入格式
第一行为一个正整数 �n。
接下来 �n 行,每行为两个正整数,第 �i 行为 ��,��ai,bi
输出格式
输出 33DAI 的开心程度的最大值。
输入1:
5
3 0
2 0
5 0
1 0
4 0
输出1:
5
输入2:
5
3 0
2 0
5 0
1 1
4 2
输出2:
13
样例解释
- 样例 1 中,33DAI 只能选择吃掉 (5,0)(5,0) 那个桃子。
- 样例 2 中,33DAI 可以按照 (1,1),(4,2),(3,0),(5,0)(1,1),(4,2),(3,0),(5,0) 的顺序吃掉四个桃子。
数据规模与约定
对于 100%100% 的数据,1≤�≤10001≤n≤1000,0≤��,��≤1000≤ai,bi≤100。
- 子任务 1(30 分):��=0bi=0。
- 子任务 2(30 分):��=1ai=1。
- 子任务 3(40 分):没有特殊限制。
#include<bits/stdc++.h>
using namespace std;
int a[1005];
int b[1005];
int main()
{
int n,k=0;
int c=0;
int z=0;
int x,y;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i]>>b[i];
}
for(int i=0;i<n;i++)
{
if(b[i]!=0)
{
break;
}
else
{
k++;
}
}
if(k==n)
{
sort(a,a+n);
cout<<a[n-1];
return 0;
}
for(int i=0;i<n;i++)
{
if(b[i]>0)
{
x+=a[i];
a[i]-=a[i];
y+=b[i];
z--;
}
}
sort(a,a+n);
y=y+1+z;
for(int i=0;i<y;i++)
{
x+=a[n-1-c];
c++;
}
cout<<x;
return 0;
}