QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#383191#7771. 不是这一道据数构结题valeriu0 538ms66124kbC++203.5kb2024-04-09 03:31:262024-04-09 03:31:26

Judging History

你现在查看的是最新测评结果

  • [2024-04-09 03:31:26]
  • 评测
  • 测评结果:0
  • 用时:538ms
  • 内存:66124kb
  • [2024-04-09 03:31:26]
  • 提交

answer

#include <bits/stdc++.h>
#define all(x) (x).begin(),(x).end()
using namespace std;

using ll = long long;
using ld = long double;

//#define int ll
#define sz(x) ((int)(x).size())

using pii = pair<int,int>;
using tii = tuple<int,int,int>;

const int nmax = 1e6 + 5;

#define lsb(x) (x & -x)

struct AIB {
   vector<int> tree;
   void init(int n) {
      tree.assign(n + 2, 0);
   }
   void upd(int p, int x) {
      p++;
      while(p < sz(tree)) tree[p] += x, p += lsb(p);
   }
   int query(int p) {
      p++;
      int sum = 0;
      while(p > 0) sum += tree[p], p -= lsb(p);
      return sum;
   }
} aib;

int sum[nmax];
void add(int p, int x) {
   aib.upd(p, x);
}
int query(int l, int r) {
   int total = r - l + 1;
   return total + aib.query(r) - aib.query(l - 1);
}

template<typename Node>
struct AINT {
   vector<Node> aint;
   int n;
   void init(int n_, Node TMP = Node()) {
      n = n_;
      aint.assign(2 * n + 10, TMP);
   }
   template<class CB> void walk(CB&& cb) { walk(cb, 0, n - 1); }
   template<class CB> void walk(CB&& cb, int l, int r) { walk(cb, l, r, 1, 0, n - 1); }
   template<class CB> void walk(CB&& cb, int l, int r, int node, int cl, int cr) { 
      if(cr < l || r < cl) return;
      if(l <= cl && cr <= r && !cb(aint[node], cl, cr)) return;
      
      int mid = (cl + cr) >> 1, L = node + 1, R = node + (mid - cl + 1) * 2;
      walk(cb, l, r, L, cl, mid);
      walk(cb, l, r, L, mid + 1, cr);
      aint[node].pull(aint[L], aint[R]);
   }
};

struct Node {
   int mx;
   void pull(Node& L, Node& R) {
      *this = Node(max(L.mx, R.mx));
   }
};

vector<pii> qs[nmax];
int rez[nmax];

signed main() {
   cin.tie(0) -> sync_with_stdio(0);
   int n, q;
   cin >> n >> q;
   aib.init(n + 1);

   vector<int> v(n);
   for(auto &x : v) cin >> x;
   
   AINT<Node> aint;
   aint.init(n);
   
   aint.walk([&](Node& val, int cl, int cr) {
      if(cl != cr) return 1;
      val.mx = v[cl];
      return 0;
   });
   
   auto nxt_gval = [&](int p, int target) {
      if(p >= n) return n;
      //cerr << p << ' ' << target << '\t'; cerr << val.mx << ", " << cl << " ~ " << cr << '\n'; 
      p++;
      int rez = p;
      aint.walk([&](Node& val, int cl, int cr) {
         if(cr < rez) return 0;
         if(rez < cl) return 0;
         if(val.mx <= target) { rez = cr + 1; return 0;}
         if(cl == cr) {
            rez = cl;
             return 0;
         }
         return 1;
      }, p, n - 1);
      
      //cerr << rez << '\n';
      return rez;
   };

   
   for(int tc = 0, l, r; tc < q; tc++) {
      cin >> l >> r;
      --l;
      --r;
      qs[l].emplace_back(r, tc);
   }
   
   
   struct st_elem {
      int val;
      int poz;
      int borderpoz;
   };
   vector<st_elem> st;
   
   for(int i = n - 1; i >= 0; i--) {
      while(!st.empty() && st.back().val > v[i]) {
         add(st.back().poz, 1);
         add(st.back().borderpoz, -1);
         st.pop_back();
      }
      
      add(i, -1);
      
      if(st.empty())
         st.emplace_back(v[i], i, n);
      else
         st.emplace_back(v[i], i, nxt_gval(st.back().val == v[i]? st.back().borderpoz : st.back().poz, v[i]));
      
      add(st.back().borderpoz, 1);
      
      for(auto [r, ptr] : qs[i])
         rez[ptr] = query(i, r);
   }
   
   for(int i = 0; i < q; i++) cout << rez[i] << '\n';
   
}

/**
  Anul asta nu se da centroid
  -- Rugaciunile mele
*/


Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 3552kb

input:

100 100
57 39 73 88 98 3 54 10 63 31 96 22 94 53 99 66 7 90 29 27 91 37 74 4 64 43 86 100 12 58 78 97 75 87 36 51 40 20 48 92 26 72 89 85 46 13 55 80 6 47 41 17 30 25 60 35 93 28 69 16 83 23 1 34 56 45 18 21 38 11 68 71 8 2 84 76 15 33 44 81 77 82 70 24 67 95 61 9 32 49 50 65 19 59 5 42 14 62 52 79
...

output:

64
91
15
7
10
1
56
20
0
11
48
7
3
13
5
36
11
85
2
52
36
0
45
65
43
21
3
30
41
22
50
53
31
17
34
37
36
8
55
38
15
2
10
3
40
86
46
8
1
34
16
78
13
57
18
56
45
8
67
39
14
78
46
54
12
29
79
7
4
64
37
18
4
34
30
38
42
3
7
17
14
16
37
58
63
47
31
10
8
16
22
64
50
0
39
45
1
23
6
0

result:

wrong answer 1st numbers differ - expected: '65', found: '64'

Test #2:

score: 0
Wrong Answer
time: 1ms
memory: 3640kb

input:

100 100
2 3 1 3 3 8 1 1 1 3 2 3 2 75 1 44 78 3 3 65 2 1 3 3 90 2 1 1 1 2 2 2 1 2 9 3 24 1 2 1 89 2 2 42 2 66 1 1 19 25 3 2 3 2 3 51 1 1 3 1 3 29 21 2 2 2 1 2 1 3 3 2 84 2 1 11 2 2 3 2 9 1 1 1 1 99 48 1 77 3 9 78 69 1 2 1 1 2 1 2
21 68
41 76
9 76
7 43
30 81
45 84
81 83
23 45
57 91
17 65
72 81
39 91
3...

output:

34
24
51
26
38
28
0
14
24
33
7
38
34
6
47
24
48
26
33
52
10
2
31
11
52
21
47
57
10
58
48
24
5
26
23
2
24
47
13
13
55
27
21
49
49
4
4
50
8
25
9
10
26
23
26
15
26
50
26
17
4
43
40
1
43
31
56
51
25
22
44
12
19
27
16
4
8
1
2
35
1
13
65
41
21
7
13
14
58
6
11
25
45
41
31
44
47
24
6
53

result:

wrong answer 1st numbers differ - expected: '35', found: '34'

Test #3:

score: 0
Wrong Answer
time: 2ms
memory: 3808kb

input:

3000 3000
82 1139 2770 344 363 880 427 2001 207 2969 1309 2063 2349 1817 1869 2724 2380 1887 1377 1422 1732 449 2105 1706 1155 2417 963 308 1996 2788 737 1963 1973 1163 2899 2438 760 1995 1435 1750 1947 2863 1606 1078 493 2922 1478 607 1871 2191 2978 2587 1699 332 1581 2048 68 350 2220 1306 1633 187...

output:

1464
908
1099
255
2577
10
1176
329
1715
2227
627
47
1353
1452
638
2746
1024
833
637
605
989
1107
1132
1186
152
2260
978
992
640
1104
685
2319
1892
162
1156
1113
1682
783
731
2043
477
334
983
889
2090
5
1260
983
615
1049
1375
1505
1820
1158
1168
599
657
295
23
169
2604
1663
1979
1664
1040
1133
156
48...

result:

wrong answer 39th numbers differ - expected: '732', found: '731'

Test #4:

score: 0
Wrong Answer
time: 2ms
memory: 4036kb

input:

3000 3000
2120 271 658 684 1092 795 2522 2924 2204 382 709 1351 2977 1639 1190 2472 458 1337 1034 566 2644 664 1224 1410 1820 625 2203 2045 1979 2297 2926 1238 2014 1492 1372 2594 1324 1854 1968 1074 919 2345 1544 1880 626 2505 1742 1427 2892 99 447 1732 2273 2490 1166 2419 2717 1248 2493 1048 2291 ...

output:

1077
883
1831
56
330
100
2421
578
1207
1586
477
1117
2741
1546
1245
55
1398
1044
826
267
456
861
248
1299
1819
278
221
1047
2444
1174
2459
421
801
75
367
845
872
1005
417
988
721
449
341
2529
379
1159
2688
255
23
210
1699
802
42
1077
335
2
3
113
1648
1871
687
737
70
402
2426
780
466
1289
2056
754
10...

result:

wrong answer 1st numbers differ - expected: '1079', found: '1077'

Test #5:

score: 0
Wrong Answer
time: 2ms
memory: 4028kb

input:

3000 3000
2637 1681 2145 1131 33 618 2714 914 2587 2182 1823 1044 1320 2020 568 2 411 902 523 2075 910 459 124 669 1546 2593 1314 312 2736 1408 1578 28 291 1017 421 798 2202 978 597 2246 1349 1486 2756 2464 1912 636 1130 201 648 882 2737 2066 2007 1758 91 2923 49 1288 2254 776 2814 1315 1665 2306 25...

output:

705
474
1002
1840
193
1483
1273
2298
83
1736
2235
297
257
853
1431
2481
1693
866
1635
330
1067
725
371
25
858
1509
1475
232
366
1478
88
776
172
163
951
1528
806
1214
134
1467
572
547
439
102
24
2107
1457
1251
1263
260
9
223
582
1437
1794
1896
171
954
1412
1297
572
502
1606
976
436
1564
650
2448
113
...

result:

wrong answer 1st numbers differ - expected: '708', found: '705'

Test #6:

score: 0
Wrong Answer
time: 2ms
memory: 3736kb

input:

3000 3000
15 64 32 83 23 22 48 7 68 36 43 75 29 17 37 97 92 42 50 87 73 43 12 48 83 44 1 13 23 96 48 60 99 26 2 104 73 73 64 61 64 49 67 94 89 9 96 102 66 19 95 2 29 78 102 61 77 84 34 92 36 31 44 25 68 47 137 131 75 37 21 173 62 44 36 53 19 165 98 100 95 57 85 32 87 69 118 85 24 35 36 98 47 44 92 2...

output:

467
721
428
448
1172
1803
585
771
624
668
1077
879
2819
521
1182
294
2019
380
1919
1472
510
2130
467
1299
408
1177
355
493
410
923
1255
22
36
1687
293
1729
839
562
2528
218
858
986
706
715
5
2275
264
59
167
662
885
28
1049
2199
658
1215
431
1838
567
2189
892
1423
122
1901
1696
537
13
2142
2549
1381
...

result:

wrong answer 45th numbers differ - expected: '4', found: '5'

Test #7:

score: 0
Wrong Answer
time: 2ms
memory: 3760kb

input:

3000 3000
96 48 34 1 27 93 76 3 38 26 79 74 25 95 34 37 5 26 54 37 62 22 17 3 53 34 10 132 64 91 53 34 74 92 64 3 103 38 74 40 31 38 63 12 84 84 80 5 88 22 51 66 28 158 16 31 26 53 47 22 66 89 7 65 91 49 62 73 26 54 13 33 28 45 48 90 91 46 37 34 53 69 70 52 62 71 56 190 154 72 25 6 17 196 66 39 80 5...

output:

1485
786
356
123
300
1005
779
339
654
371
1865
531
305
1481
2300
209
1098
1062
1365
893
1232
1829
1689
63
631
182
915
1715
741
726
297
345
1631
47
63
102
1681
1263
1955
905
1339
355
178
158
120
1853
1780
1224
132
365
764
1497
1631
334
218
53
1123
1637
849
1331
464
266
923
252
916
2227
1765
223
100
1...

result:

wrong answer 1st numbers differ - expected: '1486', found: '1485'

Test #8:

score: 0
Wrong Answer
time: 2ms
memory: 3808kb

input:

3000 3000
24 75 55 19 9 74 4 22 81 77 75 46 60 50 19 50 1 41 8 63 4 47 93 24 105 16 28 76 18 96 1 68 46 80 41 83 78 36 88 45 83 54 67 46 94 99 44 61 14 50 143 97 95 78 8 92 36 59 95 26 67 23 26 95 77 92 98 13 63 149 129 61 74 39 38 55 15 90 48 3 37 39 100 77 18 10 19 10 20 77 71 46 65 84 46 7 175 81...

output:

1582
102
35
1424
1137
1138
5
162
187
1875
489
1145
1417
1522
1
1447
291
626
742
658
2321
529
506
54
339
15
974
277
1046
13
49
1097
630
339
533
2097
631
236
105
82
724
724
1226
495
1631
1416
1784
590
210
158
110
2016
679
2387
1471
1976
725
548
1512
263
63
828
749
2594
829
1255
339
1949
2114
313
2145
...

result:

wrong answer 1st numbers differ - expected: '1585', found: '1582'

Test #9:

score: 0
Wrong Answer
time: 5ms
memory: 4244kb

input:

10000 10000
1225 3839 1022 812 2195 8154 9848 3399 6401 5375 4192 5933 7758 9460 5569 6817 1504 104 7537 509 3830 3790 686 416 5452 4214 2651 2825 5881 4373 2118 8244 8803 5866 1737 5206 3037 4862 5976 2871 9541 6867 2024 8451 7815 1083 5523 8874 1745 828 8022 5706 3404 651 4212 8126 2555 6660 5481 ...

output:

2317
3599
3097
8537
195
960
799
3058
2037
2027
1541
2196
2833
771
5561
4431
1301
2065
256
3479
6754
2225
3446
82
8993
3657
6010
6246
598
6585
3467
5990
789
2675
4614
3816
6506
5410
5631
3388
8482
3403
4104
760
3379
2558
1639
451
3111
2318
6118
1229
6212
120
325
1895
2079
761
1645
961
6467
4077
543
2...

result:

wrong answer 7th numbers differ - expected: '801', found: '799'

Test #10:

score: 0
Wrong Answer
time: 5ms
memory: 4240kb

input:

10000 10000
4293 5943 4058 5440 7413 5250 1171 9947 4399 9939 5300 6419 5446 2275 8834 6841 1566 3814 2298 5294 8131 603 2736 4135 946 7071 3233 6196 6458 5162 8229 3087 227 828 7544 3423 7594 4496 8790 4052 8704 3088 7330 7269 5010 9400 9399 3819 302 4258 2985 3323 6455 5755 7489 321 501 3299 2026 ...

output:

2271
2651
444
7139
3433
87
4845
1491
1887
8436
6860
8573
4645
792
3690
252
3903
1325
239
5380
5856
7998
869
934
3331
9302
3509
5279
2656
4558
249
3229
181
7170
7702
2816
2145
342
6986
2395
4375
5391
3237
3596
5483
4816
1364
1057
2125
2863
1455
1488
1426
2608
1074
5963
2397
3960
3396
39
208
865
2765
...

result:

wrong answer 2nd numbers differ - expected: '2653', found: '2651'

Test #11:

score: 0
Wrong Answer
time: 5ms
memory: 4240kb

input:

10000 10000
7 178 96 109 117 3 170 302 209 84 248 310 97 70 222 255 276 127 233 219 109 282 8 182 20 128 75 158 39 214 102 260 13 80 276 221 271 319 129 110 72 89 254 45 34 322 310 299 305 32 93 224 5 261 126 140 311 81 100 72 328 312 42 16 231 146 72 238 178 178 179 226 314 152 167 202 295 258 15 2...

output:

3540
3492
6381
272
975
2120
806
3968
2807
8
253
1431
9064
2839
5790
4725
5139
4190
1822
2034
404
5450
6140
2816
4761
3126
23
2010
97
831
4165
4454
312
3874
8999
7828
2109
1768
7990
654
3282
1357
8573
1740
4749
5966
137
5245
3420
864
6263
843
1850
8029
1743
1703
1449
3922
4334
976
1342
3143
4967
4553...

result:

wrong answer 2521st numbers differ - expected: '35', found: '36'

Test #12:

score: 0
Wrong Answer
time: 5ms
memory: 4460kb

input:

10000 10000
3 31 195 326 322 174 300 177 87 56 74 14 39 240 134 249 176 187 87 118 177 304 269 44 128 328 112 121 96 93 140 163 209 271 29 296 232 309 228 183 238 100 66 118 204 90 156 45 204 126 232 68 318 327 5 3 153 331 180 62 308 172 175 142 88 318 236 75 276 251 67 218 28 118 141 257 65 151 183...

output:

1097
1587
3515
1031
6208
8323
2862
5735
1103
2344
644
2487
470
1126
3820
6090
622
2978
3756
391
3684
3749
4705
6416
4527
8133
6120
421
1500
1256
1165
5093
397
4420
1598
6343
4459
3981
4623
5327
3845
1100
184
4345
9155
1902
9176
209
514
2410
2286
9315
2468
3202
1898
2259
5595
1251
1524
556
7397
2502
...

result:

wrong answer 2nd numbers differ - expected: '1588', found: '1587'

Test #13:

score: 0
Wrong Answer
time: 96ms
memory: 17720kb

input:

200000 200000
120536 165588 195015 67563 60504 93355 188680 98879 30412 35909 162690 193085 79065 58869 51576 146413 166618 182838 56146 110147 142857 111033 186246 180779 63081 24777 52683 191278 98735 11504 115999 116939 157422 109468 175004 10755 112531 71163 35398 71262 141229 231 123311 168965 ...

output:

75089
92570
57628
28640
48922
56558
82968
66695
28322
166430
482
38952
118470
122071
50229
3057
79231
79201
13575
72987
45707
144206
30494
58345
162783
75575
74032
10826
4344
9720
140844
20904
52952
88400
63115
19344
118669
165375
112253
89817
57444
88386
122826
55230
102432
128215
134656
2813
13353...

result:

wrong answer 4th numbers differ - expected: '28642', found: '28640'

Test #14:

score: 0
Wrong Answer
time: 82ms
memory: 15804kb

input:

200000 200000
5203 2776 2051 83 5255 4479 6328 3395 5764 3079 4020 4235 31 62 2282 1983 4052 5141 6514 108 45 84 2874 2225 5833 2277 5069 777 3458 4312 6577 1083 18 6003 4773 1935 2908 91 843 5317 6643 103 5581 113 6234 3738 144 3953 1234 396 4543 3518 5508 1833 1674 1446 1134 6455 4343 558 658 3664...

output:

68599
42023
31649
94132
14382
59438
125005
172541
42659
96595
17561
140904
1162
174118
6118
9900
118431
85273
52893
20162
20154
9455
113418
187700
23798
82046
38165
84958
116343
22779
56590
55144
59223
34396
101151
44233
49106
34700
18446
3679
47377
13861
126002
60031
56194
7170
117299
132375
53669
...

result:

wrong answer 7029th numbers differ - expected: '8', found: '9'

Test #15:

score: 0
Wrong Answer
time: 91ms
memory: 15832kb

input:

200000 200000
5102 3159 748 5427 621 5896 499 5528 1847 6008 961 3084 1541 3370 3477 6551 3122 34 60 5045 1000 2091 119 35 345 92 47 6200 2305 611 27 20 4462 37 1192 108 5020 6490 5834 2997 6615 4662 102 4466 3073 634 2393 278 6122 6451 4679 4161 2316 2074 4859 782 3340 3997 6350 6659 4747 2199 5225...

output:

40298
785
17317
4347
89982
20182
75792
134659
58692
21702
83921
48401
54815
119876
40560
150258
124750
14795
160809
97958
47897
107999
71587
16826
48008
10218
57944
179400
11860
2878
44399
49565
62159
25921
101990
535
23716
7907
13857
66715
69134
130911
4084
25238
7969
57623
145624
93857
82020
24653...

result:

wrong answer 461st numbers differ - expected: '12', found: '13'

Test #16:

score: 0
Wrong Answer
time: 74ms
memory: 17468kb

input:

200000 200000
5620 4596 1787 1569 11 3679 57 5561 1635 5384 5280 71 127 4084 4074 4 3533 4939 5115 96 336 75 3997 951 133 6410 4574 3466 3102 534 6321 107 2300 2531 5426 73 20 12 101 607 10 4424 5847 134 6212 862 855 5070 77 91 2010 4014 4678 4050 3695 3451 2790 4235 2235 5998 6354 5149 4794 4789 40...

output:

10109
12790
38728
16167
198015
30967
25813
58758
27224
68596
7175
19905
76354
116026
80143
179181
101778
7812
7871
5176
87627
100474
59650
68160
157974
33925
27889
170213
35514
27224
51567
72318
61590
23413
94032
95342
53043
39928
164681
5884
52204
90662
125169
1895
74144
9313
139074
32562
51266
830...

result:

wrong answer 1st numbers differ - expected: '10114', found: '10109'

Test #17:

score: 0
Wrong Answer
time: 516ms
memory: 65688kb

input:

1000000 1000000
87382 651796 951220 648926 497665 375383 228684 303780 166986 89826 91242 258504 374341 653338 160191 648153 603954 860894 376629 474180 967487 270337 3022 832849 628198 269953 992793 314447 701562 440916 559722 134912 67124 636002 748016 771119 200861 655997 618755 558 882633 709234...

output:

401389
115091
693946
405927
741547
92627
200487
82753
151394
228002
301571
510453
34245
128598
315021
504014
716098
46104
145061
544861
118917
145562
413047
596757
100850
50894
883811
180199
311843
417215
651492
188592
70439
122245
276160
104247
150070
733185
335337
609198
51882
907242
408519
507205...

result:

wrong answer 1st numbers differ - expected: '401390', found: '401389'

Test #18:

score: 0
Wrong Answer
time: 538ms
memory: 65756kb

input:

1000000 1000000
3228 19 1838 21 15231 54 27226 18805 16744 57 25133 23568 27304 24323 9187 89 14287 13412 20542 21860 23602 65 1 32705 27 20439 19966 70 7865 13967 127 30379 34 95 12820 8224 14188 32692 93 29481 28113 14591 119 7443 2802 6678 51 6838 88 74 7855 95 775 11917 104 18776 34 22985 32134 ...

output:

601769
87975
543626
148208
122254
85818
8159
181383
13904
194236
213328
139430
173150
498620
268387
595806
407081
147639
107030
14140
345529
160967
75778
611045
108846
263607
11065
517134
545505
707798
287954
26599
639829
4459
247016
426985
139157
21858
357759
297213
695761
93733
571707
513904
14232...

result:

wrong answer 2nd numbers differ - expected: '87976', found: '87975'

Test #19:

score: 0
Wrong Answer
time: 537ms
memory: 66124kb

input:

1000000 1000000
13910 7760 24228 1793 79 14626 44 10663 25005 56 4240 15833 3609 19816 13269 28175 8807 67 1480 27123 69 12868 11829 3 18390 5510 58 28157 26708 17269 10176 14025 41 7746 12814 9220 24534 115 12446 51 6256 21293 28779 6845 31048 19928 19877 13972 13317 7203 9974 13131 133 13 5348 166...

output:

149908
626053
592279
104658
180043
665728
132510
790579
318332
111443
27228
177444
318900
202114
522918
250078
266059
306169
869695
340287
43427
690066
490517
148540
558731
328410
440519
667778
674162
327415
120946
251396
476741
316593
798068
255036
307454
809193
159186
146509
692633
450103
677092
2...

result:

wrong answer 1st numbers differ - expected: '149909', found: '149908'

Test #20:

score: 0
Wrong Answer
time: 524ms
memory: 65880kb

input:

1000000 1000000
15899 2139 32955 19636 21943 29782 28207 9095 20266 68 15471 14533 17782 21804 31540 21751 19168 15466 19302 34 24617 3544 66 31466 31516 3341 30147 6947 26716 135 11544 50 30167 5 11 7820 149 5146 32617 20175 23019 23260 8830 16538 88 2357 22200 21845 2144 12436 104 31 24930 10455 1...

output:

127366
622409
88970
350108
62061
220820
468815
369350
696629
227040
194499
770550
698557
327855
58033
172055
19266
81501
11204
448625
621732
574033
298976
855979
21123
532370
932561
240266
256807
655255
96670
280067
640370
191913
328371
350249
422639
246030
781629
152850
111850
532533
705773
191469
...

result:

wrong answer 1st numbers differ - expected: '127368', found: '127366'