QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#930716#10147. 幸运数字RDFZchenyy100 ✓336ms11700kbC++142.0kb2025-03-10 08:27:212025-03-10 08:27:21

Judging History

This is the latest submission verdict.

  • [2025-03-10 08:27:21]
  • Judged
  • Verdict: 100
  • Time: 336ms
  • Memory: 11700kb
  • [2025-03-10 08:27:21]
  • Submitted

answer

#include<bits/stdc++.h>

using ll=long long;

struct Num{
    int l1,r1;
    int l2,r2;
};

#define MAXN 400005

int n;
Num num[MAXN];
int id[MAXN];
ll lcl,lcr;
ll mcl,mcr;
ll rcl,rcr;
int get(int x){
    return (x<0)?num[-x].l2:num[x].r2;
}
int pos[MAXN];
int m;
int ans;

void cntans(int val){
    if(lcr<rcl){
        ll sum=lcr+rcl+mcr;
        ll pos=(sum+1)/2;
        if(pos>lcr&&pos<=lcr+mcr) ans+=val;
    }else if(lcl>rcr){
        ll sum=lcl+rcr+mcr;
        ll pos=(sum+1)/2;
        if(pos>lcl&&pos<=lcl+mcr) ans+=val;
    }else if(mcr) ans+=val;

    return;
}

void run(){
    ans=0;
    lcl=lcr=mcl=mcr=rcl=rcr=0;
    std::cin>>n;
    for(int i=1;i<=n;i++){
        std::cin>>num[i].l1>>num[i].r1>>num[i].l2>>num[i].r2;
        rcl+=num[i].l1,rcr+=num[i].r1;
        id[2*i-1]=-i,id[2*i]=i;
        pos[2*i-1]=num[i].l2,pos[2*i]=num[i].r2;
    }
    m=2*n; std::sort(pos+1,pos+m+1);
    m=std::unique(pos+1,pos+m+1)-pos-1;
    std::sort(id+1,id+2*n+1,[](int x,int y){
        int xv=get(x),yv=get(y);
        if(xv!=yv) return xv<yv;
        else return x<y;
    });
    ans=0;
    int pn=1;
    for(int i=1;i<=m;i++){
        int pr=pn;
        while(pr<=2*n){
            if(get(id[pr])>pos[i]) break;
            ++pr;
        }
        for(int j=pn;j<pr;j++){
            if(id[j]<0){
                rcl-=num[-id[j]].l1,rcr-=num[-id[j]].r1;
                mcl+=num[-id[j]].l1,mcr+=num[-id[j]].r1;
            }
        }
        cntans(1);
        for(int j=pn;j<pr;j++){
            if(id[j]>0){
                mcl-=num[id[j]].l1,mcr-=num[id[j]].r1;
                lcl+=num[id[j]].l1,lcr+=num[id[j]].r1;
            }
        }     
        if(i!=m){
            cntans(pos[i+1]-pos[i]-1);
        }
        pn=pr;
    }
    std::cout<<ans<<'\n';
        
    return;
}

int c,T;
int main(){
    std::ios::sync_with_stdio(false);
    std::cin.tie(0),std::cout.tie(0);

    std::cin>>c>>T; for(int i=0;i<T;i++) run();

    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Pretests


Final Tests

Test #1:

score: 10
Accepted
time: 0ms
memory: 7784kb

input:

1 126
4
2 2 3 4
3 3 2 3
4 4 1 4
1 1 2 4
4
1 1 2 3
1 1 1 2
2 2 1 1
2 2 1 3
4
1 1 4 4
3 3 1 2
3 3 1 2
1 1 1 1
4
1 1 2 2
2 2 4 4
2 2 3 3
1 1 4 4
4
1 1 2 2
2 2 4 4
4 4 1 2
4 4 1 2
4
1 1 1 4
1 1 3 4
1 1 1 3
3 3 3 4
4
3 3 1 3
4 4 1 1
1 1 2 3
1 1 2 3
4
4 4 1 2
3 3 1 3
4 4 1 4
4 4 3 3
4
2 2 2 2
2 2 4 4
4 4 ...

output:

3
2
2
1
2
2
3
3
1
2
2
2
2
4
1
1
3
1
3
2
2
2
3
2
4
2
2
2
1
3
2
3
2
3
1
1
4
1
1
3
2
2
2
2
2
3
2
2
3
1
2
2
2
3
3
1
2
3
2
2
2
2
2
2
2
2
1
3
3
1
1
1
1
2
1
1
2
2
2
1
1
2
1
1
2
2
1
1
2
1
1
1
2
2
1
1
2
3
1
1
2
2
1
1
2
2
1
1
1
1
1
1
1
2
1
1
1
1
2
1
2
1
1
1
2
2

result:

ok 126 numbers

Test #2:

score: 10
Accepted
time: 1ms
memory: 5736kb

input:

2 126
4
3 3 2 3
1 3 2 4
2 4 1 4
3 4 3 4
4
2 2 2 3
3 3 2 3
3 3 3 4
1 1 2 2
4
1 2 1 1
2 3 2 2
1 2 2 2
1 2 1 2
4
1 1 1 1
2 2 1 1
1 1 4 4
3 3 1 1
4
3 3 1 1
4 4 1 3
1 1 1 2
1 1 2 3
4
1 3 1 1
2 2 1 1
4 4 1 1
3 3 4 4
4
2 4 2 2
3 4 4 4
2 2 1 4
1 2 1 4
4
2 2 1 1
1 2 1 2
1 2 4 4
1 1 2 2
4
2 2 3 4
4 4 3 4
3 3 ...

output:

3
2
2
1
3
1
3
2
2
2
3
2
3
3
1
3
1
3
3
2
1
3
3
3
1
3
2
2
1
3
2
3
2
2
2
4
3
2
2
2
2
3
3
1
1
3
2
3
3
2
3
3
3
2
2
2
2
2
2
3
1
2
3
3
2
2
1
2
1
2
1
1
2
1
1
1
2
2
2
1
2
2
1
1
2
3
1
1
2
2
2
1
2
2
1
1
2
1
1
1
1
2
2
1
2
2
1
1
2
2
1
1
1
2
1
1
2
2
1
1
2
2
2
1
2
2

result:

ok 126 numbers

Test #3:

score: 10
Accepted
time: 5ms
memory: 5868kb

input:

3 56
2000
804 804 879 911
345 345 1098 1104
750 750 1826 1827
829 829 397 428
1475 1475 1267 1352
365 365 444 451
240 240 1285 1372
874 874 880 1017
1350 1350 352 468
87 87 877 1025
723 723 893 1086
739 739 890 1027
379 379 46 131
501 501 1945 1979
1024 1024 348 423
1723 1723 905 1003
784 784 1179 1...

output:

109
855
55
28
2
11
5
26
50
3
11
3
6
13
2
26
48
4
1
4
2
27
4
24
49
3
9
9
13
9
6
31
50
11
11
13
2
14
11
25
48
18
1
5
14
11
12
35
27
30
17
12
36
6
21
1

result:

ok 56 numbers

Test #4:

score: 10
Accepted
time: 3ms
memory: 5732kb

input:

4 56
2000
1580 1938 589 599
828 1162 1133 1145
88 1981 540 541
446 885 996 997
190 495 572 575
701 865 1767 1770
1053 1709 1619 1622
203 814 1974 1982
1393 1729 1032 1033
669 1574 1042 1046
1544 1842 1137 1148
384 1732 19 21
143 1770 1049 1049
1600 1600 658 661
283 1156 188 191
523 615 1531 1535
50 ...

output:

456
1043
174
234
303
6
15
33
49
6
9
1
5
8
12
34
50
10
19
2
15
11
5
40
50
13
13
10
1
5
1
37
49
7
11
16
1
20
15
32
49
21
15
11
2
20
11
19
6
33
47
8
31
6
22
1

result:

ok 56 numbers

Test #5:

score: 10
Accepted
time: 4ms
memory: 5696kb

input:

5 56
2000
870512284 870512284 951509564 958747373
136573587 136573587 289193230 350149447
368420995 368420995 340803982 371094421
277140388 277140388 323255704 337417674
779043829 779043829 368128055 397477070
475653112 475653112 187762787 232025929
97950778 97950778 515822232 523065667
396702827 39...

output:

50203070
416281478
12522658
17615577
202048
468936439
110138988
385268445
904979564
109447877
104458874
70650768
254262533
270605986
116032566
559906190
990648768
96442474
29970565
184285483
432658
199900503
108430831
541019500
994793729
66004995
105538789
36002709
81847544
364224872
469139665
60903...

result:

ok 56 numbers

Test #6:

score: 10
Accepted
time: 4ms
memory: 7916kb

input:

6 56
2000
741806741 829584121 455938129 458717224
514608806 998783650 134791550 136498142
345198836 569047785 146366207 149922159
358278416 997453197 335253802 349067279
554147170 904884016 37378469 38520628
66917592 514821827 911695124 912144969
745768313 823598218 754456792 758281523
705570878 973...

output:

251861637
539408341
210287040
405537444
186346703
231158319
275151629
672738179
980297634
340393477
197949960
20730748
149487889
94074831
281821752
762569151
983412297
349477958
148394674
21464800
17501580
349330621
337791659
629203806
992387504
170027265
187562569
11272572
578150
208603346
94668159...

result:

ok 56 numbers

Test #7:

score: 10
Accepted
time: 329ms
memory: 10324kb

input:

7 399
200000
162255 162255 102428 117978
113191 113191 111192 124478
12167 12167 99358 106251
191926 191926 132962 135165
161520 161520 166578 169736
176528 176528 51469 55001
89810 89810 116767 116850
82340 82340 96479 110932
94136 94136 101613 124565
50350 50350 183969 191699
71591 71591 96305 993...

output:

11270
89
169
1
4982
9971
917
180
1
4992
9916
549
59
17
101
78
20
117
27
106
10
21
35
54
15
11
56
209
60
1
16
125
36
20
7
28
84
85
53
21
4
17
43
53
9
13
41
2
48
87
8
10
6
43
32
26
11
1
42
89
24
2
6
39
22
23
19
1
54
100
1
18
2
53
39
27
16
1
51
100
19
7
2
48
11
4
52
2
45
95
1
2
5
42
40
13
24
2
51
92
5
...

result:

ok 399 numbers

Test #8:

score: 10
Accepted
time: 334ms
memory: 11668kb

input:

8 399
200000
106862 122247 191253 191366
11745 170840 142894 143141
12231 68013 109393 112129
52879 188600 186794 187307
62560 135254 179888 183201
60259 67231 132836 133187
34065 129954 34790 36973
73398 164385 165718 166743
180857 180872 187716 188147
140719 194465 75868 77367
5441 173142 140333 1...

output:

63171
15307
13308
3127
6674
9999
3333
419
3062
6712
10000
3396
2782
195
74
716
155
289
370
80
895
973
788
5
461
189
333
265
362
795
648
61
511
408
84
199
597
756
867
535
594
152
733
65
37
3
18
31
70
99
42
40
35
64
57
3
11
33
62
100
37
35
49
54
23
10
9
37
73
100
17
43
22
57
59
4
16
33
60
100
15
47
19...

result:

ok 399 numbers

Test #9:

score: 10
Accepted
time: 336ms
memory: 11304kb

input:

9 399
200000
379152868 379152868 217239760 243341982
6273270 6273270 190043475 257037637
188655171 188655171 43946711 74660059
852006388 852006388 170956065 245550827
536255742 536255742 470814826 476827105
139542819 139542819 286936499 292897922
4724934 4724934 517899124 546909848
914029461 9140294...

output:

54195490
1896387
17266
182285
506199346
999837223
70856471
6649199
76370
513497545
999883645
121016920
13464157
2333204
22541528
53123332
13705604
13135704
13183398
28185234
7946299
426658
22268154
3135391
1867731
3738325
30183065
4907517
7818941
90887186
26647419
47172491
12514473
3373602
4754690
1...

result:

ok 399 numbers

Test #10:

score: 10
Accepted
time: 334ms
memory: 11700kb

input:

10 399
200000
116655743 688211253 621269119 628519492
219282398 797277949 399404950 400728611
130797569 705422865 570842621 572620311
761311940 823004444 621954238 628501025
253204185 949427576 514382621 524496392
444838631 852194814 808491861 829911764
781457487 927247645 969849505 978967277
352988...

output:

464351704
484135459
290742722
191028318
686981331
999767459
319737341
80784047
186191720
693505588
999858146
309178740
425413394
288877890
165958471
475203548
464217295
195388516
371059537
79897760
50750006
169139521
242372233
251346173
474922504
80220665
125081647
73151662
409454565
256077807
26324...

result:

ok 399 numbers

Extra Test:

score: 0
Extra Test Passed