#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<vector>
#include<map>
using namespace std;
//...
#define pii pair<int,int>
vector<pii >pa,pb;
map<pii,int>m;
#define OP operator
bool OP<(pii ip,pii pb){return m[ip]<m[pb];}
bool OP>(pii ip,pii pb){return m[ip]>m[pb];}
void out(vector<pii >pd){//输出一个vector
printf("%d >",pd.size());
for(int i=0;i<pd.size();i++)if(m.count(pd[i]))
printf("(%d,%d)[%d],",pd[i].first,pd[i].second,m[pd[i]]);putchar(10);
}
void t(){out(pa),out(pb),putchar(10);}
int main(){
//...
t();
make_heap(pa.begin(),pa.end(),greater<pii >()),
make_heap(pb.begin(),pb.end(), less<pii >());
t();
//...
}
为什么会输出
3 >(-1,2)[0],(5,5)[2],(-1000000000,0)[9],
3 >(-1,2)[0],(5,5)[2],(-1000000000,0)[9],
3 >(-1000000000,0)[9],(5,5)[2],(-1,2)[0],
3 >(5,5)[2],(-1,2)[0],(-1000000000,0)[9],
而不是
3 >(-1,2)[0],(5,5)[2],(-1000000000,0)[9],
3 >(-1,2)[0],(5,5)[2],(-1000000000,0)[9],
3 >(-1000000000,0)[9],(5,5)[2],(-1,2)[0],
3 >(-1,2)[0],(5,5)[2],(-1000000000,0)[9],