提出 #58377417


ソースコード 拡げる

// 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;
}

提出情報

提出日時
問題 J - Drink Bar
ユーザ do_it_tomorrow
言語 C++ 17 (gcc 12.2)
得点 22
コード長 1625 Byte
結果 AC
実行時間 184 ms
メモリ 8164 KiB

ジャッジ結果

セット名 All
得点 / 配点 22 / 22
結果
AC × 25
セット名 テストケース
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
ケース名 結果 実行時間 メモリ
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