poj 2823
感觉没什么大区别,怎么就RE呢??????
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;
int a[1000011];//数组数据
int OutMin[1000011];//最小值
int OutMax[1000011];//最大值
int cnt1=0;
int cnt2=0;
int n,k;
struct cmp1
{
bool operator()(const int a1,const int a2)
{
return a[a1]>a[a2];
}
};
struct cmp2
{
bool operator()(const int a1,const int a2)
{
return a[a1]<a[a2];
}
};
priority_queue <int ,vector<int>,cmp1> Q1;
priority_queue <int ,vector<int>,cmp2> Q2;
int main()
{
int i;
scanf("%d%d",&n,&k);
if(k>n)
k=n;
for(i=1;i<=n;++i)
{
scanf("%d",&a[i]);
}
for(i=1;i<=k;++i)
{
Q1.push(i);
Q2.push(i);
}
OutMin[cnt1++]=a[Q1.top()];
OutMax[cnt2++]=a[Q2.top()];
for(i=k+1;i<=n;++i)
{
Q1.push(i);
Q2.push(i);
while(i-Q1.top()>=k)
Q1.pop();
OutMin[cnt1++]=a[Q1.top()];
while(i-Q2.top()>=k)
Q2.pop();
OutMax[cnt2++]=a[Q2.top()];
}
for(i=0;i<=(n-k);++i)
{
printf("%d%c", OutMin[i], (i < n - k) ? ' ' : '\n');
}
for(i=0;i<=(n-k);++i)
{
printf("%d%c", OutMax[i], (i < n - k) ? ' ' : '\n');
}
return 0;
}