支配值数目

来源:互联网 发布:淘宝退款纸条怎么写 编辑:程序博客网 时间:2024/04/28 19:01

支配值数目

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

已知f[]与g[]两个整数数组,元素都已经从小到大排好序,请写一个程序,算出f[]中比g[]中元素大的对数。换句话说,f[0]比g[]中多少个元素大,f[1]比g[]中多少个元素大等,这些值的总和就是要求的答案。
举个例子,如果f[]中有1,3,5,7,9,而g[]中有2,3,4,7,8。
那么:
f[0]比g[]中的所有元素都小;
f[1]比g[0]大;
f[2]比g[0]、g[1]、g[2]大;
f[3]比g[0]、g[1]、g[2]大;
f[4]比g[0]、g[1]、g[2]、g[3]、g[4]大;
所以答案是0+1+3+3+5=12。

输入

第一行为两个整数m, n(1≤m, n≤1000),分别代表数组f[], g[]的长度。
第二行有m个元素,为数组f[]。
第三行有n个元素,为数组g[]。

输出

输出支配值。

示例输入

5 51 3 5 7 92 3 4 7 8

示例输出

12

提示

你能想出O(n+m)的算法吗?^_^ 加油

#include<bits/stdc++.h>using namespace std;int main(){       int a[1001],b[1001];       int i,j,k=0,m,n;       cin>>m>>n;       for (i=0;i<m;i++)       cin>>a[i];       for (i=0;i<n;i++)       cin>>b[i];       i=j=0;       while (i<m&&j<n)       {               if (a[i]<=b[j])                 i++;               else               j++,k+=m-i;     //由于俩数组都是由小到大的有序序列,因此当a[i]>b[i]时,a[i]以后的数自然都大于b[i]之前的数.       }       cout<<k<<endl;       return 0;}


0 0
原创粉丝点击