【排序】朋友

在这里插入图片描述

思路

将俩种人混在一起排序。然后存下希望想和大佬交朋友的人数,碰上一个想和蒟蒻交朋友的就加上。

#include<cstdio>
#include<algorithm>
using namespace std;
struct asdf{
	int z,pd;
} a[40005];
bool cmd(asdf aa,asdf bb){//从小到大,且想和大佬的往后排,这样可以避免重分交朋友
	if(aa.z<bb.z) return 1;
	if(aa.z==bb.z&&aa.pd==0) return 1;
	return 0;
}
int n,m,j,ans;
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i){
		scanf("%d",&a[i].z);
		a[i].pd=0;
	}
	for(int i=1;i<=m;++i){
		scanf("%d",&a[n+i].z);
		a[i+n].pd=1;      //标记是那种人
	}
	sort(a+1,a+n+m+1,cmd);
	for(int i=1;i<=n+m;++i){
	    if(a[i].pd) j++;      //如果想和大佬交朋友
		else ans+=j;	   //可以和前面的想和大佬交朋友的人交朋友。。。
	}
	printf("%d",ans);
}

猜你喜欢

转载自blog.csdn.net/qq_42937087/article/details/89417784