U47402
  • 板块题目总版
  • 楼主liyuan2023
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/22 16:39
  • 上次更新2024/7/22 17:24:42
查看原帖
U47402
1188691
liyuan2023楼主2024/7/22 16:39
#include<bits/stdc++.h>
using namespace std;
long long n,ans=0;
struct node{
	long long x,y;
}a[100005],t[100005];
bool cmp(node b,node c){
	return b.x<c.x;
}
void cdq(long long l,long long r){
	if(l==r){
		return ;
	}
	long long mid=(l+r)/2;
	long long i=l,j=mid+1,k=l;
	cdq(l,mid);
	cdq(mid+1,r);
	for(;j<=r;){
		while(i<=mid&&a[i].y<=a[j].y){
			t[k++]=a[i++];
		}
		t[k++]=a[j++];
		ans+=i-l;
	}
	for(;i<=mid;){
		t[k++]=a[i++];
	}
	for(;j<=r;){
		t[k++]=a[j++];
	}
	for(long long i=l;i<=r;i++){
		a[i]=t[i];
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i].x>>a[i].y;
	}
	sort(a+1,a+n+1,cmp);
	cdq(1,n);
	cout<<ans;
	return 0;
}
求查错
2024/7/22 16:39
加载中...