PAT1057.Stack (30)

题目地址:http://pat.zju.edu.cn/contests/pat-a-practise/1057

这题为浙大2013年考研复试上机的最后一题,分数值为30分,大部分人开始都会出现有几个case超时的状况,可能源于频繁的在PeekMedian操作时进行排序,导致了超时。

利用树状数组,辅之以普通的二分法,可以在限定的100ms内得到结果。树状数组的介绍

//#include"stdafx.h"
#include
#include
#include
#include
using namespace std;

const int N=100005;
int c[N];

int lowbit(int i){
	return i&(-i);
}

void add(int pos,int value){
	while(pos0){
		res+=c[pos];
		pos-=lowbit(pos);
	}
	return res;
}

int find(int value){
	int l=0,r=N-1,median,res;
	while(l


你可能感兴趣的:(PAT)