第k大的数即为前2*k+1个数的中位数,为什么是错的?

P1168 中位数

巧若拙 @ 2017-03-01 09:49:30

#include<iostream>
#include<algorithm>
#include<math.h>
#include<queue>
using namespace std;
int main()
{
    const int max = 100001;
     int a[max] = {0};
     priority_queue<int, vector<int>, greater<int> >h;
    int n, i, j;
    cin >> n;
    for (i=0; i<n; i++)
    {
         cin >> a[i];
    }
    for (i=1,j=0; i<=n; i+=2)
    {
         h.push(a[j++]);  
         while (j < i)
         {
            if (a[j] > h.top())//比最小值大,则插入新值,删除原来的最小值
            {
                h.push(a[j]); 
                h.pop();  
            } 
            j++;
        }
        cout << h.top() << endl;
    }
    system("pause");                   
    return 0;
}

by 巧若拙 @ 2017-03-01 14:22:33

我已经知道错了。就不浪费大神们的时间了。


by 夏色祭 @ 2017-08-12 13:37:26

兄弟,我们不叫“大神”的,都叫“大佬”


by war1111 @ 2017-11-07 13:55:01

%%%


|