Submission #58377417


Source Code Expand

// LUOGU_RID: 179790464
#include<iostream>
#include<vector>
#include<algorithm>
#define int long long
using namespace std;
const int N=1e5+5;
struct BIT{
	int s[N];int lowbit(int x){return x&-x;}
	vector<int> g;
	void updata(int x,int v){for(int i=x;i<=N;i+=lowbit(i)) s[i]+=v;g.push_back(x);}
	void clear(int x){for(int i=x;i<=N;i+=lowbit(i)) s[i]=0;}
	int sum(int x){int ans=0;for(int i=x;i>=1;i-=lowbit(i)) ans+=s[i];return ans;}
	void clear(){for(int i:g) clear(i);g.clear();}
}tree;
int n;
struct node{int x,y,z,ct;}a[N];
bool cmp(node a,node b){return a.x<b.x;}
bool cnm(node a,node b){return a.y<b.y;}
int C(int n,int m){
	if(m==2) return n*(n-1)/2;
	return n*(n-1)*(n-2)/6;
}
int CDQ(int l,int r){
	if(l==r) return void(),a[l].ct=0;
	int mid=(l+r)/2,s=CDQ(l,mid)+CDQ(mid+1,r),p=l;
	sort(a+l,a+mid+1,cnm),sort(a+mid+1,a+r+1,cnm);
	for(int i=mid+1;i<=r;i++){
		while(p<=mid&&a[p].y<a[i].y) tree.updata(a[p++].z,1);
		s+=tree.sum(a[i].z),a[i].ct+=tree.sum(a[i].z);
	}
	tree.clear();return s;
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
    cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i].x>>a[i].y>>a[i].z;
	sort(a+1,a+1+n,cmp);
	int ans=n+C(n,2)+C(n,3)-CDQ(1,n);
	sort(a+1,a+1+n,cmp),tree.clear();
	for(int i=1;i<=n;i++){
		ans-=C(tree.sum(a[i].y),2);
		tree.updata(a[i].y,1);
		ans+=C(a[i].ct,2)*2;
	}
	tree.clear();
	for(int i=1;i<=n;i++){
		ans-=C(tree.sum(a[i].z),2);
		tree.updata(a[i].z,1);
	}
	sort(a+1,a+1+n,cnm),tree.clear();
	for(int i=1;i<=n;i++){
		ans-=C(tree.sum(a[i].z),2);
		tree.updata(a[i].z,1);
	}
	cout<<ans<<'\n';
	return 0;
}

Submission Info

Submission Time
Task J - Drink Bar
User do_it_tomorrow
Language C++ 17 (gcc 12.2)
Score 22
Code Size 1625 Byte
Status AC
Exec Time 184 ms
Memory 8164 KiB

Judge Result

Set Name All
Score / Max Score 22 / 22
Status
AC × 25
Set Name Test Cases
All 000, 001, 002, 003, 004, 005, 006, 007, 008, 009, 010, 011, 012, 013, 014, 015, 016, 017, 018, 019, 020, 021, 022, 900, 901
Case Name Status Exec Time Memory
000 AC 183 ms 8000 KiB
001 AC 183 ms 8152 KiB
002 AC 102 ms 6016 KiB
003 AC 184 ms 8156 KiB
004 AC 162 ms 7580 KiB
005 AC 184 ms 8164 KiB
006 AC 49 ms 4792 KiB
007 AC 183 ms 8160 KiB
008 AC 70 ms 5360 KiB
009 AC 184 ms 8076 KiB
010 AC 53 ms 5060 KiB
011 AC 184 ms 8148 KiB
012 AC 145 ms 7348 KiB
013 AC 183 ms 7988 KiB
014 AC 116 ms 6712 KiB
015 AC 184 ms 8088 KiB
016 AC 118 ms 6856 KiB
017 AC 184 ms 8020 KiB
018 AC 151 ms 7364 KiB
019 AC 184 ms 7908 KiB
020 AC 1 ms 3528 KiB
021 AC 88 ms 7964 KiB
022 AC 75 ms 7964 KiB
900 AC 1 ms 3660 KiB
901 AC 1 ms 3536 KiB