描述
现在呢有两个整形数组,a[n]和b[m],而且已经知道这两个数组都是非降序数组。现在呢就有一个工作需要你来完成啦。对于a中的每个元素a[i]在b中寻找<=a[i] 的元素个数,个数记为x[i]。但是我们并不关心每个x[i],现在只要你计算所有x[i]的和就可以啦。
输入
输入包含单组样例第一行两个整数 n,m
第二行n个整数代表a数组元素。第三行m个整数代表b数组元素。保证a,b数组元素非递减排列。数组元素为int类型1=<m,n<=10000000;
输出
输出包含一行仅一个整数,表示结果。注意结果比较大,注意用long,long
输入样例 1
3 4 1 2 5 3 5 5 48
输出样例 1
3
水题,给出的序列是非递减的,不需要排序,直接暴力啊。
代码:
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; int n,m; int a[10000000],b[10000000]; long long ans = 0; int main() { scanf("%d%d",&n,&m); for(int i = 0;i < n;i ++) { scanf("%d",&a[i]); } for(int j = 0;j < m;j ++) { scanf("%d",&b[j]); } int c = 0; for(int i = 0;i < n;i ++) { while(c < m && b[c] <= a[i]) c ++; ans += c; } printf("%lld",ans); }