一道离散化的题目 发现提前定长
vector<int> c(N)
时,
lower_bound(c.begin(),c.end(),num)-c.begin()的位置会偏移一位,不明白原理
而不加(N)就不会偏移
全代码如下(标准离散化模板):
#include <bits/stdc++.h>
using namespace std;
#define N 100005
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int h,w,n,x,y,maa,mab;
cin >> h >> w >> n;
int a[N],b[N];
vector<int>c,d;
for(int i=1;i<=n;i++){
cin >> a[i] >> b[i];
c.push_back(a[i]);
d.push_back(b[i]);
}
sort(c.begin(),c.end());
sort(d.begin(),d.end());
c.erase(unique(c.begin(),c.end()),c.end());
d.erase(unique(d.begin(),d.end()),d.end());
for(int i=1;i<=n;i++){
cout << lower_bound(c.begin(),c.end(),a[i])-c.begin()+1 << " ";
cout << lower_bound(d.begin(),d.end(),b[i])-d.begin()+1 << endl;
}
return 0;
}