描述

 

现在呢有两个整形数组,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);
}