提出 #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 |
| 結果 |
|
| セット名 |
テストケース |
| 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 |