c++代码疑问,求各位解答
#include <bits/stdc++.h>
#define ll long long
#define pii pair<int,int>
using namespace std;
int n;
pii input[1000005];
bool cmp(pii x , pii y){
return x.first < y.first;
}
priority_queue <pii , vector<pii > , greater<pii > > q;
void solve()
{
scanf("%d" , &n);
for (int i = 1 ; i <= n ; i++)
{
int x , y;scanf("%d%d" , &x , &y);
input[i].first = x , input[i].second = y;
}
sort (input + 1 , input + 1 + n , cmp);
int sum = 0;
for (int i = 1 ; i <= n ; i++)
{
if (input[i].first <= q.size())
{
if (input[i].second > q.top().second)
{
sum += input[i].second - q.top().second;
q.pop();q.push(input[i]);
}
}
else
{
q.push(input[i]);
sum += input[i].second;
}
// cout << sum << '\n';
}
printf("%d" , sum);
}
int main()
{
solve();
return 0;
}
这个代码过了其中一个样例
3
2 10
1 5
1 7
这个样例答案是17
可是没过
7
1 6
1 7
3 2
3 1
2 4
2 5
6 1
这个样例答案是15