QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#462822#3101. Event Hopping 2nhuang6850 67ms15812kbC++203.2kb2024-07-04 06:23:102024-07-04 06:23:10

Judging History

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

  • [2024-07-04 06:23:10]
  • 评测
  • 测评结果:0
  • 用时:67ms
  • 内存:15812kb
  • [2024-07-04 06:23:10]
  • 提交

answer

/**
 * @file qoj3101-1.cpp
 * @author n685
 * @brief
 * @date 2024-07-03
 *
 *
 */
#include <bits/stdc++.h>

#ifdef LOCAL
#include "dd/debug.h"
#else
#define dbg(...) 42
#define dbgR(...) 4242
#define dbgP(...) 420
#define dbgRP(...) 420420
void nline() {}
void bar() {}
#endif

namespace rs = std::ranges;
namespace rv = std::views;

constexpr int MX = 100000;
constexpr int LG = std::__lg(2 * MX - 1);

template <class T> struct CC {
  std::vector<T> val;
  void insert(T a) { val.push_back(a); }
  void init() {
    std::sort(val.begin(), val.end());
    val.erase(std::unique(val.begin(), val.end()), val.end());
  }
  int operator[](T a) const {
    return static_cast<int>(std::distance(
        val.begin(), std::lower_bound(val.begin(), val.end(), a)));
  }
  int size() const { return static_cast<int>(val.size()); }
};

struct Event {
  int val, i, type;
};

int main() {
#ifndef LOCAL
  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);
#endif

  int n, k;
  std::cin >> n >> k;
  ++n;
  ++k;

  std::vector<int> l(n), r(n);
  CC<int> cc;
  cc.insert(0);
  for (const int i : rv::iota(1, n)) {
    std::cin >> l[i] >> r[i];
    cc.insert(l[i]);
    cc.insert(r[i]);
  }
  cc.init();
  const int m = cc.size();
  for (int &i : l) {
    i = cc[i];
  }
  for (int &i : r) {
    i = cc[i];
  }
  std::vector lift(LG, std::vector<int>(n + 1, n));
  {
    std::vector<Event> ev;
    for (const int i : rv::iota(0, n)) {
      ev.emplace_back(l[i], i, 0);
      ev.emplace_back(r[i], i, 1);
    }
    std::ranges::sort(
        ev, std::greater<>(),
        [](const Event &e) -> std::pair<int, int> { return {e.val, e.type}; });
    int miR = m, mi = n;
    for (const auto &[val, i, type] : ev) {
      if (type == 0) {
        if (miR > r[i]) {
          miR = r[i];
          mi = i;
        }
      } else {
        lift[0][i] = mi;
      }
    }
    for (const int i : rv::iota(1, LG)) {
      for (const int j : rv::iota(0, n)) {
        lift[i][j] = lift[i - 1][lift[i - 1][j]];
      }
    }
  }
  auto count = [&](int i, int rb) -> int {
    int ans = 0;
    for (const int j : rv::iota(0, LG) | rv::reverse) {
      const int nxt = lift[j][i];
      if (nxt != n and r[nxt] <= rb) {
        ans or_eq (1 << j);
        i = nxt;
      }
    }
    return ans;
  };
  std::set<std::pair<int, int>> in;
  in.emplace(0, 0);
  int cnt = count(0, m) + 1;
  for (const int i : rv::iota(1, n)) {
    const auto it = in.lower_bound({r[i], 0});
    if ((it != in.end() and l[it->second] < r[i]) or
        std::prev(it)->first > l[i]) {
      continue;
    }
    const int rb = (it == in.end() ? m : l[it->second]),
              li = std::prev(it)->second;
    int lcnt = cnt - count(li, rb);
    lcnt += count(li, l[i]);
    lcnt += 1;
    lcnt += count(i, rb);
    if (lcnt >= k) {
      in.emplace(r[i], i);
    }
    if (std::ssize(in) >= k) {
      break;
    }
  }
  if (std::ssize(in) < k) {
    std::cout << "-1\n";
  } else {
    std::vector<int> ans;
    ans.reserve(k - 1);
    for (const auto &[a, i] : in | rv::drop(1)) {
      ans.push_back(i);
    }
    std::ranges::sort(ans);
    for (const int i : ans) {
      std::cout << i << '\n';
    }
  }
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 7
Accepted
time: 1ms
memory: 3856kb

input:

1 1
1 3

output:

1

result:

ok single line: '1'

Test #2:

score: 0
Accepted
time: 0ms
memory: 3576kb

input:

2 1
2 4
3 7

output:

1

result:

ok single line: '1'

Test #3:

score: 0
Accepted
time: 0ms
memory: 3860kb

input:

3 1
2 5
3 5
4 7

output:

1

result:

ok single line: '1'

Test #4:

score: -7
Wrong Answer
time: 41ms
memory: 15812kb

input:

99999 93097
40044 40749
44538 45365
46530 47401
52845 53481
59519 60065
86226 87059
88353 88992
95665 96502
95669 96575
100446 100968
121870 122544
130836 131540
146294 147230
151177 151970
160381 161376
164174 165119
166582 167438
169062 169687
173200 173849
177329 178217
189213 189811
249372 25029...

output:

-1

result:

wrong answer 1st lines differ - expected: '1', found: '-1'

Subtask #2:

score: 0
Wrong Answer

Test #47:

score: 1
Accepted
time: 0ms
memory: 3564kb

input:

1 1
134842099 137944073

output:

1

result:

ok single line: '1'

Test #48:

score: 0
Accepted
time: 0ms
memory: 3628kb

input:

2 2
4015595 884953730
519508315 726912949

output:

-1

result:

ok single line: '-1'

Test #49:

score: 0
Accepted
time: 1ms
memory: 3600kb

input:

3 2
551691302 800582045
14063803 52897269
153641504 567834643

output:

1
2

result:

ok 2 lines

Test #50:

score: 0
Accepted
time: 0ms
memory: 3504kb

input:

18 3
157893686 958635898
790021767 976682032
534783017 706987897
216566011 510148270
288661613 856715472
81126924 420966670
9734253 823219818
77427078 241270378
182953794 928971032
65710916 937359407
159217847 343023570
266169092 635952191
94867522 407392584
298640819 490028599
281580042 514089998
6...

output:

2
3
4

result:

ok 3 lines

Test #51:

score: 0
Accepted
time: 0ms
memory: 3628kb

input:

19 3
345121760 363569961
369142474 697961114
204455374 777512357
278051598 780834857
119744682 610142516
112692534 284271720
530820418 613805256
666599238 970772442
684066330 747151742
52464000 153949333
361766230 921325388
34600363 168745634
119418778 738281466
828841976 976561834
257913352 2579536...

output:

1
2
6

result:

ok 3 lines

Test #52:

score: 0
Accepted
time: 0ms
memory: 3560kb

input:

20 3
226617517 417144410
401110226 504506272
204308913 972565478
100780114 930332684
473716139 730386187
327436800 871728821
662616072 881801440
469971234 769277127
437331467 913865677
641546412 700063729
82089639 830256714
384651823 502387376
558881974 905373190
468189379 998408858
9103683 60217281...

output:

1
7
18

result:

ok 3 lines

Test #53:

score: 0
Accepted
time: 0ms
memory: 3604kb

input:

20 5
715591101 817706977
777008847 930020190
379125190 717746290
308826535 651449374
799848635 899870053
173402733 393191194
565584335 789226348
291163241 758381981
249473019 374801668
294956234 880404922
451362750 913870571
98855617 246302398
339866606 382702111
293058132 409201146
478015003 708631...

output:

1
9
12
15
19

result:

ok 5 lines

Test #54:

score: 0
Accepted
time: 0ms
memory: 3604kb

input:

20 4
95564966 475651640
544140915 921414489
36636943 545028649
269212181 518161723
368415853 600482753
416749483 825099524
704848425 946709199
145082659 465308089
751497619 765279722
452763328 557958381
643817392 876292284
353226095 933184330
466610247 590597228
29324927 65589713
155598093 306733984...

output:

5
7
14
15

result:

ok 4 lines

Test #55:

score: 0
Accepted
time: 0ms
memory: 3516kb

input:

20 2
341059917 968468550
619575412 657744605
362725213 784431788
79002877 857963719
636336680 943339572
282572479 300370019
213849085 706084423
315706132 851874320
740367416 998763448
113510482 521411850
198080835 487564765
29193064 86493364
488295690 701227663
351650597 899167999
437802529 73566590...

output:

1
6

result:

ok 2 lines

Test #56:

score: 0
Accepted
time: 0ms
memory: 3568kb

input:

20 1
827468447 879951302
735432164 759558988
269959865 944012171
67243577 84278317
805433568 936534843
171608293 591686301
112362102 822334845
410116008 619648090
306041507 327894522
360193096 488922828
417005225 834550228
872712520 873151446
472785468 800113380
39268216 894210474
600856133 91169444...

output:

1

result:

ok single line: '1'

Test #57:

score: 0
Accepted
time: 0ms
memory: 3632kb

input:

20 9
18246520 289037312
223590378 904221984
158468076 685664873
661343077 978347160
435186112 640627800
559466880 559927584
45242916 566596015
130290765 300200349
175183463 434730463
75064355 595211002
333621902 449961207
28044312 78011568
267319532 981800089
579543582 623250773
501315035 549454467
...

output:

-1

result:

ok single line: '-1'

Test #58:

score: 0
Accepted
time: 0ms
memory: 3852kb

input:

20 4
282915225 425599000
46844071 877724908
331562754 774194013
454952275 729482745
26829711 957331160
627282472 841455868
100114358 781547255
150014807 274089000
534690006 980470663
541821180 599376720
84150518 232318480
4457533 168338098
28542916 343576455
94961278 964757965
1021672 802156769
1412...

output:

1
6
8
10

result:

ok 4 lines

Test #59:

score: 0
Accepted
time: 0ms
memory: 3636kb

input:

20 3
568423024 732950395
30698730 953476873
240194350 760469817
571506747 960258324
142530756 898809811
502816961 572446466
63299466 595327108
441383100 954106794
401449920 893452390
131382436 615911903
103318462 704161744
17001604 744184311
355982562 921938859
277739118 448466769
852604059 87135217...

output:

1
14
15

result:

ok 3 lines

Test #60:

score: 0
Accepted
time: 0ms
memory: 3576kb

input:

20 4
729581552 843936903
595777889 662269624
434082235 904888330
189209392 706890360
122057607 566242764
12655119 862773552
253295242 267145374
514009091 646726110
699170128 892329802
139765740 798881549
465088674 483212263
438274771 843531949
551372681 969365825
370571050 441985295
369851925 695022...

output:

1
2
7
11

result:

ok 4 lines

Test #61:

score: 0
Accepted
time: 0ms
memory: 3580kb

input:

20 3
52680030 171567270
562416436 932178589
180457200 874534710
57962547 619926504
514034951 735903893
569357027 949556658
96546655 769067522
156273105 550639233
102800728 342367246
341675981 994824681
12457939 294153271
13450385 307425366
90257349 383467364
29966544 411684432
69951674 186314264
223...

output:

-1

result:

ok single line: '-1'

Test #62:

score: -1
Wrong Answer
time: 0ms
memory: 3812kb

input:

20 9
18 22
2 5
28 31
21 25
25 27
3 6
36 39
22 26
8 12
27 31
27 29
32 36
14 18
16 20
22 26
10 14
17 21
13 17
15 19
37 40

output:

-1

result:

wrong answer 1st lines differ - expected: '2', found: '-1'

Subtask #3:

score: 0
Wrong Answer

Test #74:

score: 31
Accepted
time: 2ms
memory: 3740kb

input:

3000 57
226083340 261990234
392684356 462929590
468018811 841719892
495096853 606046097
196983814 256423598
331199122 967656486
802593662 931108452
74501453 679054962
294344294 752837262
295708332 547261648
265421699 652708933
272959087 727136240
165667761 846917534
61770748 157663302
608516043 8492...

output:

50
85
104
139
173
189
257
273
297
327
347
374
411
543
600
665
686
750
766
850
971
977
990
1040
1069
1074
1109
1183
1226
1231
1316
1440
1508
1597
1611
1670
1676
1774
1811
1822
1885
1968
2005
2103
2153
2271
2304
2416
2445
2562
2593
2608
2690
2798
2873
2884
2952

result:

ok 57 lines

Test #75:

score: -31
Wrong Answer
time: 0ms
memory: 3740kb

input:

3000 52
515391161 611274809
241579177 794330740
10171859 421070901
191803444 462515964
789307312 942558211
168283015 749632607
741578406 748242944
727114778 888235899
285915154 538783207
740946890 927609854
511153062 526293212
202320202 315438522
60716314 641460650
4714115 322423665
680445730 761796...

output:

-1

result:

wrong answer 1st lines differ - expected: '1', found: '-1'

Subtask #4:

score: 0
Wrong Answer

Test #111:

score: 61
Accepted
time: 67ms
memory: 15268kb

input:

100000 361
136798318 785362988
255943758 535488232
175203444 266819907
766993466 893575347
67274251 589651108
662289594 883406317
830803801 849703610
729398668 798198453
202605534 677648797
66407931 925909114
174421361 601553812
522629146 701284080
136544340 295925673
299796891 499869765
736583725 8...

output:

42
102
185
215
660
950
1006
1623
1980
2396
2561
3016
3096
3729
3924
4119
4471
4619
4677
5229
5380
5400
5430
5681
5889
5901
5924
6013
6031
6043
6049
6316
6365
6483
6510
6575
7327
7492
7798
7833
7867
7954
7984
8089
8092
8237
8885
9212
9714
9971
10114
10190
10242
10260
10265
10321
10533
11184
11295
115...

result:

ok 361 lines

Test #112:

score: -61
Wrong Answer
time: 64ms
memory: 15116kb

input:

100000 328
269692358 997698065
516351186 607170799
899165316 935984256
231654824 951113023
397634275 844276634
272944023 356674362
331036300 591789552
534270410 758375903
257707030 473980095
317825664 516882620
610579169 989404143
101902362 760414607
698174500 729348168
91656793 503436924
534091914 ...

output:

-1

result:

wrong answer 1st lines differ - expected: '2', found: '-1'