Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
求大神搭救...第一次写!但是一直过不了!自己测试了好久没发现错误!但是就是AC不了#include <iostream> #include <stdio.h> #include <queue> #include <vector> using namespace std; priority_queue<int,vector<int>,greater<int> > Pmin; priority_queue<int> Pmax; //构建一个大顶堆和一个小顶堆的优先队列 int M,N; int A[3005]; int u[3005]; int i = 0; void operater(){ int K=0;//记录是第k小的数字 for(int j = 0;j<M;j++){ K++; for(;i<u[j]||Pmax.size()<K;i++){ if(Pmax.size()<K){ if(i<u[j]){ if(!Pmin.empty() && A[i]>Pmin.top()) { Pmax.push( Pmin.top() ); Pmin.pop(); Pmin.push(A[i]); } else Pmax.push(A[i]); } else if(!Pmin.empty()){ Pmax.push(Pmin.top()); Pmin.pop(); i--; } else break; }//if else { if(Pmax.top() > A[i]){ Pmin.push(Pmax.top()); Pmax.pop(); Pmax.push(A[i]); } else{ Pmin.push(A[i]); }//else }//else }//for cout<<Pmax.top()<<endl; } } int main() { cin>>N>>M; for(int i=0;i<N;i++){//输入一系列数 cin>>A[i]; } for(int j=0;j<M;j++){//输入 cin>>u[j]; } operater(); return 1; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator