先全都扔到优先队列里(最小堆),然后出队最小的两个,如果相等的话,合成一个新的再扔到队列里。如果不相等,则把出队那两个其中较小的扔一个单独的数组array里,另一个大一点的再扔回队列里,直到队列为空。array的尺寸就是结果。
我做的时候最后一个没再放回队列,所以是array.size()+1
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int main()
{
ios::sync_with_stdio(false);
LL n;
LL good;
cin >> n;
priority_queue<LL,vector<LL>,greater<LL>> que;