排序之离散化
#include<iostream> #include<algorithm> #include<cstring> #include<cstdio> #include<vector> const int maxn =10000; using namespace std; int s[maxn]; int n; vector<int>v; int query(int x) { return lower_bound(v.begin(),v.end(),x) - v.begin() +1; } int main() { cin>>n; for(int i=1;i<=n;++i) { cin>>s[i]; v.push_back(s[i]); } stable_sort(v.begin(),v.end()); v.erase(unique(v.begin(),v.end()),v.end()); for(int i=0;i<v.size();i++) cout<<v[i]<<' '; puts(""); for(int i=1;i<=n;++i) { cout<<query(s[i])<<' '; } return 0; }
例题:Cinema
题意翻译
莫斯科在举办一场重要的有n 个不同国家的珂学家参与的国际会议,每个珂学家都只会一种语言。为了方便起见,我们规定一种语言用1到10^9 的数来描述。 在会议之后的晚上,珂学家们决定去看电影。他们去的电影院有m场电影,每场有两个不同的数字,分别代表配音的语言和字幕的语言。如果一个珂学家能听懂配音,他会非常愉悦;如果能看懂字幕,他会比较满意。如果既看不懂也听不懂,他会很生气。 珂学家们决定去看同一场电影,你必须帮助他们选择一场电影,让愉悦的人最多的前提下,比较满意的人最多。 输入格式: 第一行一个整数n(1≤n≤200000) 表示珂学家个数。 第二行n个整数a1, a2, ..., an(1≤ai≤109) 表示珂学家们会的语言。 第三行一个整数 m 1≤m≤200000 表示电影的场数。 第四行m个整数b1, b2, ..., bn(1≤bj≤109) 表示电影的配音用的语言。 第五行m 个整数