题意
给定长度为 \(n\) 的序列 \(a\) 和长度为 \(m\) 的序列 \(b\),序列 \(c\) 为这两个序列连在一起组成的。求 \(a\) 和 \(b\) 中的每个元素在 \(c\) 中分别是第几小。
思路
STL 的练手题。输入时将 \(a\) 和 \(b\) 中的元素存入 \(c\) 中,然后使用 sort 从小到大排序,最后再使用 lower_bound 函数查找即可。
代码实现十分简洁:
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int n,m,a[1000001],b[1000001],c[2000001],cnt;
int main()
{
cin >> n >> m;
for( int i = 1 ; i <= n ; i ++ )
cin >> a[i],c[ ++ cnt ] = a[i];
for( int i = 1 ; i <= m ; i ++ )
cin >> b[i],c[ ++ cnt ] = b[i];
sort( c + 1 , c + cnt + 1 );
for( int i = 1 ; i <= n ; i ++ )
cout << lower_bound( c + 1 , c + cnt + 1 , a[i]) - c << ' ';
cout << endl;
for( int i = 1 ; i <= m ; i ++ )
cout << lower_bound( c + 1 , c + cnt + 1 , b[i]) - c << ' ';
return 0;
}
标签:sort,cnt,int,序列,include,abc294
From: https://www.cnblogs.com/-lilong-/p/17976892