免费网站建设入门,网站美工设计详细步骤,电子商务网站建设,给窗帘做网站朋友
题目大意#xff1a;
有两堆数#xff0c;只有第一堆数会和第二堆数中比自己小的数交“朋友”#xff0c;问有多少对朋友
原题#xff1a;
题目描述
mxy 即将前往新世界。 在前往新世界的过程中#xff0c;ta 遇见了两种人。一种是只和 lowb 做朋友#xff0c;…朋友
题目大意
有两堆数只有第一堆数会和第二堆数中比自己小的数交“朋友”问有多少对朋友
原题
题目描述
mxy 即将前往新世界。 在前往新世界的过程中ta 遇见了两种人。一种是只和 lowb 做朋友即当且仅当自己的能力值大于对方时他们会成为朋友另一种是大神我们做朋友即当且仅当自己的能力 值小于对方时他们会成为朋友。 现在告诉你两种人的能力值。请你计算一共有多少对友好关系。
输入
每组测试数据有三行。 第一行有两个整数 mn(1 mn 20000)分别代表前者人数和后者人数。 第二行 m 个数第三行 n 个数代表各自的能力值。
输出
一行一个整数表示有多少对友好关系。
输入样例
5 3
8 1 7 3 1
3 6 1输出样例
7解题思路
on2on^2on2很显然会炸我们可以把两堆数放在一起然后从小到大排序然后遇到1类就加上能交的朋友遇到2类就朋友1
代码
#includecstdio
#includecstring
#includeiostream
#includealgorithm
using namespace std;
int n,m,sum,ans;
struct rec
{int s,u;
}a[40005];
bool cmp(rec xx,rec yy)
{return xx.syy.s||(xx.syy.sxx.uyy.u);//从小到大排如果有相同的就让一类在前面因为一类不能和数字相同的二类交朋友
}
int main()
{scanf(%d %d,n,m);for (int i1;in;i){scanf(%d,a[i].s);a[i].u1;//类别}for (int i1;im;i){scanf(%d,a[in].s);a[in].u2;}sort(a1,a1nm,cmp);//排序for (int i1;inm;i)if (a[i].u1) anssum;//累计else sum;//加一printf(%d,ans);
}