QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#393815 | #1838. Intellectual Implementation | fzj2007 | AC ✓ | 1250ms | 118028kb | C++14 | 5.7kb | 2024-04-19 13:30:33 | 2024-04-19 13:30:33 |
Judging History
answer
#include<bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
template<typename T>inline void read(T &x){
x=0;
bool flag=0;
char ch=getchar();
while(ch<'0'||ch>'9') flag=flag||(ch=='-'),ch=getchar();
while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
x=flag?-x:x;
}
template<typename T,typename ...Args>inline void read(T &x,Args &...args){
read(x),read(args...);
}
template<typename T>inline void prt(T x){
if(x>9) prt(x/10);
putchar(x%10+'0');
}
template<typename T>inline void put(T x){
if(x<0) putchar('-'),x=-x;
prt(x);
}
template<typename T>inline void put(char ch,T x){
put(x),putchar(ch);
}
template<typename T,typename ...Args>inline void put(char ch,T x,Args ...args){
put(ch,x),put(ch,args...);
}
#define N 400005
#define ll long long
struct node{
int l,r,d,u;
}p[N];
inline bool intersect(int l1,int r1,int l2,int r2){
return r1>=l2&&r2>=l1;
}
inline bool check(node x,node y){
return intersect(x.l,x.r,y.l,y.r)&&intersect(x.d,x.u,y.d,y.u);
}
int n,bx[N],by[N],lenx,leny;
ll sect[N];
struct Line{
int l,r,id;
Line(int _l=0,int _r=0,int _id=0):l(_l),r(_r),id(_id){}
};
struct BIT{
int c[N];
BIT(){memset(c,0,sizeof(c));}
inline void clear(){memset(c,0,sizeof(c));}
#define lowbit(x) (x&-x)
inline void update(int x,int v){
for(;x<=leny;x+=lowbit(x)) c[x]+=v;
}
inline int query(int x){
int res=0;
for(;x;x^=lowbit(x)) res+=c[x];
return res;
}
#undef lowbit
}Now,Rev;
bool vis[N];
vector<Line> ins[N];
inline void solve(){
for(int i=1;i<=n;i++){
ins[p[i].l].emplace_back(p[i].d,p[i].u,i);
ins[p[i].r].emplace_back(p[i].d,p[i].u,i);
}
Now.clear(),Rev.clear();
for(int i=1,all=0;i<=lenx;i++){
for(auto tmp:ins[i]){
int l=tmp.l,r=tmp.r,id=tmp.id;
if(!vis[id]){
sect[id]+=all-Now.query(l-1)-Rev.query(leny-(r+1)+1);
Now.update(r,1);
Rev.update(leny-l+1,1);
vis[id]=1,all++;
}else{
Now.update(r,-1);
Rev.update(leny-l+1,-1);
vis[id]=0,all--;
}
}
}
Now.clear(),Rev.clear();
for(int i=1,all=0;i<=lenx;i++){
for(auto tmp:ins[i]){
int l=tmp.l,r=tmp.r,id=tmp.id;
if(!vis[id]){
sect[id]-=all-Now.query(l-1)-Rev.query(leny-(r+1)+1);
Now.update(r,1);
Rev.update(leny-l+1,1);
vis[id]=1,all++;
}else{
sect[id]+=all-Now.query(l-1)-Rev.query(leny-(r+1)+1)-1;
vis[id]=0;
}
}
}
}
struct Tree{
struct Node{
ll numr,numr2,tag;
}t[N<<2];
BIT Bt;
Tree(){memset(t,0,sizeof(t));}
#define lc(x) (x<<1)
#define rc(x) (x<<1|1)
inline void push_up(int x){
t[x].numr=t[lc(x)].numr+t[rc(x)].numr;
t[x].numr2=t[lc(x)].numr2+t[rc(x)].numr2;
}
inline void push_tag(int x,ll val){
t[x].numr2+=val*t[x].numr,t[x].tag+=val;
}
inline void push_down(int x){
if(t[x].tag){
push_tag(lc(x),t[x].tag);
push_tag(rc(x),t[x].tag);
t[x].tag=0;
}
}
inline void update1(int x,int l,int r,int pos,int val){
if(l==r) return t[x].numr+=val,void();
int mid=l+r>>1;
push_down(x);
if(pos<=mid) update1(lc(x),l,mid,pos,val);
else update1(rc(x),mid+1,r,pos,val);
push_up(x);
}
inline void update2(int x,int l,int r,int ql,int qr,int val){
if(l>qr||r<ql||ql>qr) return;
if(ql<=l&&qr>=r) return push_tag(x,val),void();
int mid=l+r>>1;
push_down(x);
if(ql<=mid) update2(lc(x),l,mid,ql,qr,val);
if(qr>mid) update2(rc(x),mid+1,r,ql,qr,val);
push_up(x);
}
inline void update3(int x,int l,int r,int pos,int val){
if(l==r) return t[x].numr2+=val,void();
int mid=l+r>>1;
push_down(x);
if(pos<=mid) update3(lc(x),l,mid,pos,val);
else update3(rc(x),mid+1,r,pos,val);
push_up(x);
}
inline ll query1(int x,int l,int r,int ql,int qr){
if(l>qr||r<ql||ql>qr) return 0;
if(ql<=l&&qr>=r) return t[x].numr;
int mid=l+r>>1;
ll res=0;
push_down(x);
if(ql<=mid) res+=query1(lc(x),l,mid,ql,qr);
if(qr>mid) res+=query1(rc(x),mid+1,r,ql,qr);
return res;
}
inline ll query2(int x,int l,int r,int ql,int qr){
if(l>qr||r<ql||ql>qr) return 0;
if(ql<=l&&qr>=r) return t[x].numr2;
int mid=l+r>>1;
ll res=0;
push_down(x);
if(ql<=mid) res+=query2(lc(x),l,mid,ql,qr);
if(qr>mid) res+=query2(rc(x),mid+1,r,ql,qr);
return res;
}
inline void modify(int l,int r,int op){
if(op==1){
update2(1,1,leny,l,r,1);
update3(1,1,leny,r,query1(1,1,leny,r+1,leny)-(Bt.query(leny)-Bt.query(r)));
update1(1,1,leny,r,1);
Bt.update(l,1);
}else{
Bt.update(l,-1);
update1(1,1,leny,r,-1);
update3(1,1,leny,r,-query1(1,1,leny,r+1,leny)+(Bt.query(leny)-Bt.query(r)));
update2(1,1,leny,l,r,-1);
}
}
#undef lc
#undef rc
}Tnow,Trev;
inline ll solve3(){
ll res=0;
for(int i=1;i<=lenx;i++){
for(auto tmp:ins[i]){
int l=tmp.l,r=tmp.r,id=tmp.id;
if(!vis[id]){
res+=Tnow.query2(1,1,leny,1,leny)-Tnow.query2(1,1,leny,1,l-1)-Trev.query2(1,1,leny,1,leny-(r+1)+1);
Tnow.modify(l,r,1);
Trev.modify(leny-r+1,leny-l+1,1);
vis[id]=1;
}else{
Tnow.modify(l,r,-1);
Trev.modify(leny-r+1,leny-l+1,-1);
vis[id]=0;
}
}
}
return res;
}
int main(){
read(n);
for(int i=1;i<=n;i++){
read(p[i].l,p[i].r,p[i] .d,p[i].u);
bx[++lenx]=p[i].l,bx[++lenx]=p[i].r;
by[++leny]=p[i].d,by[++leny]=p[i].u;
}
sort(bx+1,bx+lenx+1),lenx=unique(bx+1,bx+lenx+1)-bx-1;
sort(by+1,by+leny+1),leny=unique(by+1,by+leny+1)-by-1;
for(int i=1;i<=n;i++){
p[i].l=lower_bound(bx+1,bx+lenx+1,p[i].l)-bx;
p[i].r=lower_bound(bx+1,bx+lenx+1,p[i].r)-bx;
p[i].d=lower_bound(by+1,by+leny+1,p[i].d)-by;
p[i].u=lower_bound(by+1,by+leny+1,p[i].u)-by;
}
solve();
ll sum1=0,sum2=0;
for(int i=1;i<=n;i++) sum1+=sect[i],sum2+=sect[i]*(sect[i]-1);
put('\n',1ll*n*(n-1)*(n-2)/6-sum1/2*(n-2)+sum2/2-solve3());
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 12ms
memory: 97052kb
input:
5 1 5 1 5 4 8 2 6 3 7 3 7 2 6 28 32 42 46 42 46
output:
3
result:
ok 1 number(s): "3"
Test #2:
score: 0
Accepted
time: 4ms
memory: 100264kb
input:
6 1 8 6 10 2 5 3 12 3 4 15 20 0 9 2 22 -5 22 -2 23 -7 11 -1 17
output:
0
result:
ok 1 number(s): "0"
Test #3:
score: 0
Accepted
time: 8ms
memory: 97192kb
input:
10 -114 -46 148 199 -27 187 -26 190 -64 -16 151 228 -162 -44 -107 -96 45 185 -197 -128 100 180 -23 222 -152 138 52 181 141 193 -109 87 -87 175 -35 123 -110 227 -73 -44
output:
41
result:
ok 1 number(s): "41"
Test #4:
score: 0
Accepted
time: 0ms
memory: 97380kb
input:
10 -41 251 194 288 -194 69 -194 130 -17 23 -74 -60 -321 -236 89 298 -55 233 53 137 -32 114 -46 -24 -183 312 -286 322 -205 5 -222 67 14 119 -126 15 -76 57 -122 27
output:
20
result:
ok 1 number(s): "20"
Test #5:
score: 0
Accepted
time: 0ms
memory: 97060kb
input:
10 -68 10 22 87 30 89 -97 82 -52 25 -22 76 -20 95 21 25 -3 2 -7 45 -98 -56 -15 16 -79 -11 -73 -29 -71 59 -67 -40 -78 -46 -81 85 -62 -23 -90 -59
output:
24
result:
ok 1 number(s): "24"
Test #6:
score: 0
Accepted
time: 3ms
memory: 97596kb
input:
5 5 10 -15 -5 -11 6 2 13 7 8 -9 -2 -2 0 -3 10 -13 3 0 8
output:
0
result:
ok 1 number(s): "0"
Test #7:
score: 0
Accepted
time: 10ms
memory: 96928kb
input:
20 -12 9 10 21 -14 15 4 20 -3 22 12 29 -15 -13 -10 2 -5 14 -25 23 -6 28 -16 18 -7 24 -28 -21 25 26 -20 -2 -26 -11 -30 28 18 30 -27 -12 7 12 -17 -3 -23 -18 -9 -5 -22 8 9 25 -10 27 -24 -4 -4 10 17 24 2 23 -29 6 -24 19 26 27 -2 17 1 8 -8 16 -23 15 -19 -1 3 16
output:
300
result:
ok 1 number(s): "300"
Test #8:
score: 0
Accepted
time: 12ms
memory: 97796kb
input:
100 119 194 50 138 -42 74 -161 189 172 179 -127 35 -80 -74 -28 -8 -158 -88 42 155 7 182 41 123 -48 61 -100 -39 56 171 -154 -104 63 109 -27 5 96 107 -199 171 -110 98 142 159 -189 79 -62 97 148 159 -69 120 -11 155 -31 40 -1 1 -81 -48 125 130 74 179 -144 140 -70 154 -123 -19 -45 -37 -69 50 -121 -64 -18...
output:
30008
result:
ok 1 number(s): "30008"
Test #9:
score: 0
Accepted
time: 4ms
memory: 100400kb
input:
100 -127 147 -71 149 -76 75 -135 34 32 137 -154 -37 -102 67 28 125 -3 142 -102 -81 92 112 13 58 -22 118 -143 106 -1 146 19 156 23 93 -90 -43 84 132 40 119 -65 29 -74 26 79 88 121 148 -158 -12 -107 -51 -32 115 -96 -87 -153 -104 -9 68 -130 -129 -156 159 -123 156 -69 -2 -134 -83 -138 76 152 153 -27 117...
output:
36432
result:
ok 1 number(s): "36432"
Test #10:
score: 0
Accepted
time: 0ms
memory: 100908kb
input:
50 2 55 -27 -12 -22 92 -11 43 -7 15 3 98 -57 -10 -89 95 -13 -1 -45 6 -93 31 35 61 5 87 -70 -62 -95 19 -38 63 -75 100 -16 -5 -85 23 19 30 -28 96 -57 16 -63 47 -74 74 -20 65 -13 53 -17 67 -33 99 -87 60 -83 -26 -16 30 -64 92 -6 83 -56 64 -89 81 -81 -67 -25 88 -28 73 42 73 -7 22 -82 -72 -60 41 -49 9 36 ...
output:
3163
result:
ok 1 number(s): "3163"
Test #11:
score: 0
Accepted
time: 0ms
memory: 96980kb
input:
80 -49 -30 -69 41 -18 18 -19 109 -105 5 43 55 -23 53 26 65 -51 -46 -43 70 -33 55 -30 118 26 77 -97 -81 -69 108 -102 22 -100 84 -46 -37 45 102 -8 116 -11 19 27 117 -85 115 1 21 -53 -37 -39 -6 12 46 -51 105 2 112 -74 111 49 73 -95 97 -91 -34 -54 99 -103 -17 -62 60 -120 34 107 112 -65 91 37 54 0 29 -11...
output:
18042
result:
ok 1 number(s): "18042"
Test #12:
score: 0
Accepted
time: 6ms
memory: 97440kb
input:
100 -841118249 54124743 -626326499 268957660 -67982407 863071822 -701390018 -698615688 -442643513 576076137 -764229963 551005051 431006196 814541207 -59789787 297920747 -43726137 776889568 123191521 355546306 449575877 539401232 -547154377 156487400 -242017904 -56664269 71627074 636983445 -533630763...
output:
33574
result:
ok 1 number(s): "33574"
Test #13:
score: 0
Accepted
time: 4ms
memory: 97128kb
input:
200 -159856875 589617180 -91740528 827012068 -3244468 100974204 -204897309 624235032 740363419 811458184 -770093768 -459183292 -748577744 537657877 -919036011 26850784 -674800746 -335189105 -487556614 623807767 -759398571 -749755285 -236633574 905693829 -112618074 250091661 520796982 549786377 -6798...
output:
247012
result:
ok 1 number(s): "247012"
Test #14:
score: 0
Accepted
time: 13ms
memory: 100500kb
input:
300 -911895578 -569581980 147878148 795131888 -661123414 -528441116 242053045 343472902 -76629649 803750439 773718158 980952637 260774546 366805612 -674049855 -181475940 -626652074 -421458352 -803337455 840191725 -244053740 184891420 -345099744 -169202563 -610128030 -226308036 -999353606 -735065818 ...
output:
1004267
result:
ok 1 number(s): "1004267"
Test #15:
score: 0
Accepted
time: 8ms
memory: 100192kb
input:
400 -830909902 861153449 -941780998 682464119 -220613384 281811674 -140128942 596875820 -960867515 -893622718 -236470184 975088832 -569688535 278858509 108993388 443221717 -918115043 -168115959 -891546816 880881705 -870818590 261647805 109139390 141318241 -96908206 -8404805 -791583380 -285895911 -97...
output:
2460666
result:
ok 1 number(s): "2460666"
Test #16:
score: 0
Accepted
time: 8ms
memory: 98868kb
input:
500 -298045711 417051395 -782949912 -678693884 -480285944 -450842739 -817278222 -611664178 -725485468 289384214 431167941 996431266 296942472 545694821 529862288 892036630 -966488219 380193728 -623285356 322011072 -937683357 -464585685 208749252 563378525 32491625 836408211 753208585 826252259 -9271...
output:
5193294
result:
ok 1 number(s): "5193294"
Test #17:
score: 0
Accepted
time: 7ms
memory: 100104kb
input:
600 203069778 837722424 -543331236 -415606770 -386104799 757616438 -358261261 800539792 -733193213 -527608855 -603691664 425304136 -338921825 20059141 -324920128 616502859 -962983894 390446329 -583704357 -355023895 -431981811 479704306 -982382342 571147558 -561868565 -81198337 -797621509 -722887724 ...
output:
7677331
result:
ok 1 number(s): "7677331"
Test #18:
score: 0
Accepted
time: 7ms
memory: 97440kb
input:
700 -254001632 25368060 -303712559 -152519656 -616334153 -56358682 433198742 956414891 -497811166 117340991 124473038 629209786 38143104 724584029 -79933972 703143429 745553138 938756017 -899485198 -138639937 -524128202 -221247560 9913878 586701067 48201493 282944451 -810084792 -53484308 202718665 6...
output:
12296144
result:
ok 1 number(s): "12296144"
Test #19:
score: 0
Accepted
time: 7ms
memory: 100500kb
input:
2000 -580297120 549197350 -598869041 879583075 -954556446 -62577411 -803731747 335487679 -689376577 785481974 16605213 888665084 -320257042 329495972 491782245 670597773 347303891 363810780 -440727101 99207071 354771150 530453687 -499509583 407580550 -363375564 650395473 -31669850 374805738 -9452822...
output:
313938221
result:
ok 1 number(s): "313938221"
Test #20:
score: 0
Accepted
time: 29ms
memory: 100972kb
input:
5000 -591270635 510694320 83206315 186982934 -697045084 -198641774 -375097474 752780107 -702494041 -200162855 -980400671 -923640406 -418088873 614160702 -623846134 -30029692 -272220084 518501838 -655904295 910767648 132927998 169713224 -675737799 -241853350 -538544803 -21550989 -714286937 -378442715...
output:
4558798032
result:
ok 1 number(s): "4558798032"
Test #21:
score: 0
Accepted
time: 43ms
memory: 100692kb
input:
10000 -201957185 118307450 -266375727 745966927 -736796598 75870065 471448807 594899198 -723586512 655989486 -73931815 245738688 -984988678 906250107 -589969172 517901031 -799809845 759583842 -220308400 398919680 -488446145 777931876 -676675087 -646648304 -876126176 -209651494 97786386 417944889 -36...
output:
36473099188
result:
ok 1 number(s): "36473099188"
Test #22:
score: 0
Accepted
time: 524ms
memory: 108204kb
input:
100000 226564148 486750691 -450254989 466727591 -502609877 -3752654 -440437681 500722941 -983190884 202308173 -544037788 -57081694 70916258 294751219 -290590129 873004953 723830371 964799716 -177364196 91139653 534342079 544990348 -632680846 666392090 -906658216 -423388042 -210927029 816790191 -8911...
output:
37183181239478
result:
ok 1 number(s): "37183181239478"
Test #23:
score: 0
Accepted
time: 1250ms
memory: 117384kb
input:
200000 367031365 380518706 -590955530 -145803774 30572786 915595795 -492108235 -76144590 -206184243 482187782 166234680 411061068 -160448386 93871862 -690036834 -413709526 -928088982 -582615677 -200003644 653596324 -391991446 -148169696 58890373 876425548 -657005544 13191918 -518772663 979443176 739...
output:
297858270782347
result:
ok 1 number(s): "297858270782347"
Test #24:
score: 0
Accepted
time: 1182ms
memory: 115164kb
input:
200000 -225636631 970953278 -551217116 569289094 -386591114 874277277 227774719 368531094 414874571 744129011 167365910 489367267 -101394885 252157771 -935558478 -921784933 -332996759 193645059 450365810 615535977 534268382 839442266 -651344308 973612355 -812834130 -463779096 -908813542 988376312 -8...
output:
300088515091234
result:
ok 1 number(s): "300088515091234"
Test #25:
score: 0
Accepted
time: 1188ms
memory: 116596kb
input:
200000 -760211388 42056124 187370466 662010342 -950028200 909542645 -810431015 -267421984 -256202835 671322162 -356383109 -101939354 260772572 708149873 -130443586 834223039 -471047217 750658799 -707049350 -400288110 -669122331 574041864 -200846059 112227901 -421966055 349825346 2584613 803301379 -7...
output:
299317567765471
result:
ok 1 number(s): "299317567765471"
Test #26:
score: 0
Accepted
time: 1165ms
memory: 116660kb
input:
200000 -607025449 422340287 208590202 787872296 -560243992 795908494 171563580 561131367 -21277979 499711837 -990850781 315353074 -932236149 893694354 -676563240 -294476635 -568879047 -189586820 -422384620 899084426 -131595505 988329603 -280713171 612591604 -487739224 -162196229 -416733396 581458227...
output:
299452022544391
result:
ok 1 number(s): "299452022544391"
Test #27:
score: 0
Accepted
time: 1170ms
memory: 118028kb
input:
200000 -353795267 -72450692 -668444954 833598622 143622250 863303762 -643752691 755639156 -499956318 -277725570 -813946559 -798373012 84149596 816059259 -790850687 -741312049 -147276564 969847415 -85091488 735030540 -571153407 948556121 337581491 457060648 -581429766 675144296 569058303 574376014 23...
output:
299139726450686
result:
ok 1 number(s): "299139726450686"
Test #28:
score: 0
Accepted
time: 1173ms
memory: 115300kb
input:
200000 -617996869 279869790 355290630 842758249 411598902 577463371 -805271492 561017689 768119544 849969331 -835412646 801721101 612385160 985328506 314735514 411888407 275797722 666732704 -229323442 482005409 -461351447 -91443934 -466036854 984932471 28297600 884470395 -393202949 1928682 -26489602...
output:
300307736868420
result:
ok 1 number(s): "300307736868420"
Test #29:
score: 0
Accepted
time: 1174ms
memory: 116460kb
input:
200000 -219806 87059 -331800 15467 -398900 -156419 -191467 -31392 -180415 190637 -56257 369691 -251590 -239726 -145539 311463 -383962 -337339 125245 270519 -397922 -120176 -191769 376026 -36330 275900 -291524 27697 339087 388026 -255842 -177030 -37402 47488 -258929 255008 -323046 -89972 -386706 1531...
output:
297006755898278
result:
ok 1 number(s): "297006755898278"
Test #30:
score: 0
Accepted
time: 1169ms
memory: 115152kb
input:
200000 -64205 415759 18371 176549 -356219 455332 182159 380632 -148533 -6548 -307252 466748 -433538 -197819 12331 217327 -366031 271135 -442357 -139359 29091 499051 -160979 448862 -3397 341051 -327855 461482 -435024 9154 104065 158233 102967 476382 -121788 322416 9360 475240 9803 284989 -175083 2965...
output:
296698907698133
result:
ok 1 number(s): "296698907698133"
Test #31:
score: 0
Accepted
time: 1162ms
memory: 117384kb
input:
200000 -1087845 4754710 2899905 3507907 92042 719716 212637 1684307 -1807754 2196421 -4233981 -669938 -2872558 -407329 -3859314 -392538 -1981106 606603 -1402557 -767511 4567096 4785610 -135473 1068806 -2692479 -1839766 -2427870 928598 -3873136 4633760 -497884 2551791 -4980919 4103129 -3984158 202326...
output:
297707734978257
result:
ok 1 number(s): "297707734978257"
Test #32:
score: 0
Accepted
time: 1197ms
memory: 115200kb
input:
200000 -161706 123833 -337725 79849 -167211 -32288 -332709 -46049 -179529 -39672 -88309 204596 242670 265751 34087 140544 -104435 168695 -66676 203705 -304326 208485 83541 215514 -314871 287643 -151603 117949 -308301 133510 -147734 43907 -297458 87087 -148393 259194 -51666 244952 -327479 16194 -8009...
output:
298463780366978
result:
ok 1 number(s): "298463780366978"
Test #33:
score: 0
Accepted
time: 580ms
memory: 117260kb
input:
200000 1 200002 1 200002 2 200003 2 200003 3 200004 3 200004 4 200005 4 200005 5 200006 5 200006 6 200007 6 200007 7 200008 7 200008 8 200009 8 200009 9 200010 9 200010 10 200011 10 200011 11 200012 11 200012 12 200013 12 200013 13 200014 13 200014 14 200015 14 200015 15 200016 15 200016 16 200017 1...
output:
0
result:
ok 1 number(s): "0"
Test #34:
score: 0
Accepted
time: 604ms
memory: 116704kb
input:
199999 1 200001 1 200001 2 200002 2 200002 3 200003 3 200003 4 200004 4 200004 5 200005 5 200005 6 200006 6 200006 7 200007 7 200007 8 200008 8 200008 9 200009 9 200009 10 200010 10 200010 11 200011 11 200011 12 200012 12 200012 13 200013 13 200013 14 200014 14 200014 15 200015 15 200015 16 200016 1...
output:
0
result:
ok 1 number(s): "0"