QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#474786#8594. Fieldnhuang685#5 380ms11436kbC++202.9kb2024-07-13 03:50:372024-07-13 03:50:38

Judging History

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

  • [2024-07-13 03:50:38]
  • 评测
  • 测评结果:5
  • 用时:380ms
  • 内存:11436kb
  • [2024-07-13 03:50:37]
  • 提交

answer

#include <bits/stdc++.h>

constexpr std::array<int, 4> dx{-1, 0, 1, 0}, dy{0, 1, 0, -1};
constexpr int64_t INF = 0x3f3f3f3f3f3f3f3f;

template <class T> struct CC {
  std::vector<T> val;
  void insert(T v) {
    val.push_back(v);
  }
  void init() {
    std::ranges::sort(val);
    val.erase(std::unique(val.begin(), val.end()), val.end());
  }
  int cc(T v) {
    return static_cast<int>(std::lower_bound(val.begin(), val.end(), v) -
                            val.begin());
  }
};

void solve1(int n, int q) {
  CC<int> cx, cy;
  std::vector<int> a(n), b(n), c(n), d(n), x(q), y(q);
  cx.insert(0);
  cy.insert(0);
  for (int i = 0; i < n; ++i) {
    std::cin >> a[i] >> b[i] >> c[i] >> d[i];
    cx.insert(a[i]);
    cx.insert(b[i]);
    cy.insert(c[i]);
    cy.insert(d[i]);
    cx.insert(a[i] - 1);
    cx.insert(b[i] + 1);
    cy.insert(c[i] - 1);
    cy.insert(d[i] + 1);
  }
  for (int i = 0; i < q; ++i) {
    std::cin >> x[i] >> y[i];
    cx.insert(x[i]);
    cy.insert(y[i]);
  }
  cx.init();
  cy.init();
  for (int &i : a) {
    i = cx.cc(i);
  }
  for (int &i : b) {
    i = cx.cc(i);
  }
  for (int &i : c) {
    i = cy.cc(i);
  }
  for (int &i : d) {
    i = cy.cc(i);
  }
  for (int &i : x) {
    i = cx.cc(i);
  }
  for (int &i : y) {
    i = cy.cc(i);
  }
  int sx = static_cast<int>(cx.val.size());
  int sy = static_cast<int>(cy.val.size());
  auto good = [&](int nx, int ny) -> bool {
    if (nx < 0 || nx >= sx || ny < 0 || ny >= sy) {
      return false;
    }
    for (int i = 0; i < n; ++i) {
      if (a[i] <= nx && nx <= b[i] && c[i] <= ny && ny <= d[i]) {
        return false;
      }
    }
    return true;
  };
  std::vector dist(sx, std::vector<int64_t>(sy, INF));
  dist[cx.cc(0)][cy.cc(0)] = 0;
  using T = std::pair<int64_t, std::pair<int, int>>;
  std::priority_queue<T, std::vector<T>, std::greater<>> pq;
  pq.emplace(0, std::pair{cx.cc(0), cy.cc(0)});
  while (!pq.empty()) {
    auto [dd, loc] = pq.top();
    pq.pop();
    auto [lx, ly] = loc;
    if (dd != dist[lx][ly]) {
      continue;
    }
    for (int diff = 0; diff < 4; ++diff) {
      int nx = lx + dx[diff];
      int ny = ly + dy[diff];
      if (!good(nx, ny)) {
        continue;
      }
      int64_t nd = static_cast<int64_t>(std::abs(cx.val[lx] - cx.val[nx])) +
          std::abs(cy.val[ly] - cy.val[ny]);
      if (dist[nx][ny] > dist[lx][ly] + nd) {
        dist[nx][ny] = dist[lx][ly] + nd;
        pq.emplace(dist[nx][ny], std::pair{nx, ny});
      }
    }
  }
  for (int i = 0; i < q; ++i) {
    if (dist[x[i]][y[i]] == INF) {
      std::cout << "-1\n";
    } else {
      std::cout << dist[x[i]][y[i]] << '\n';
    }
  }
}
void solve2(int n, int q) {

}

int main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);

  int n, t, q;
  std::cin >> n >> t >> q;
  if (t == 1) {
    solve1(n, q);
  } else {
    solve2(n, q);
  }
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 5
Accepted

Test #1:

score: 5
Accepted
time: 380ms
memory: 11424kb

input:

100 1 200000
387 400 -379 -369
383 396 -400 -387
325 394 365 391
386 390 -356 -347
-384 -373 -400 -337
381 396 -382 -363
-397 -346 -392 -348
370 370 -378 -350
-391 -382 -398 -394
392 400 397 398
362 372 297 389
377 389 -399 -297
-378 -303 -394 -388
-369 -328 -357 -353
385 391 -350 -325
397 398 -381 ...

output:

772
693
689
637
751
723
481
703
797
689
701
615
707
761
650
551
724
710
410
715
690
759
615
406
754
724
649
601
699
726
717
725
710
416
727
661
677
630
727
760
758
728
664
539
755
679
784
613
671
639
683
744
522
495
761
703
680
752
689
501
699
653
682
345
725
727
686
684
615
627
409
706
704
421
693
...

result:

ok 200000 numbers

Test #2:

score: 0
Accepted
time: 352ms
memory: 11400kb

input:

100 1 200000
2 7 50 113
119 157 -333 -316
156 156 148 158
-99 -43 -60 -51
-290 -272 -263 -262
-192 -192 203 204
-396 -390 -156 -148
-90 -89 -247 -242
-90 -47 -258 -246
-315 -308 360 371
385 390 259 260
222 290 -334 -326
12 19 69 85
-212 -210 -369 -314
-330 -322 -118 -95
-92 -83 48 76
-313 -309 51 58...

output:

385
292
217
783
593
482
146
774
262
228
521
532
509
491
709
517
442
190
486
338
588
510
451
163
379
463
460
192
499
458
368
378
375
381
153
317
282
290
415
179
541
717
399
313
318
572
183
308
560
545
709
714
237
602
229
180
166
413
620
255
473
218
486
244
546
539
237
288
282
519
264
608
301
250
486
...

result:

ok 200000 numbers

Test #3:

score: 0
Accepted
time: 321ms
memory: 11288kb

input:

100 1 200000
260 323 -196 -174
5 8 57 79
-302 -275 -31 -12
62 72 97 99
330 333 -374 -302
-80 -75 -99 -87
-51 -36 -369 -338
135 136 -10 15
-391 -356 -95 -86
-274 -263 -338 -334
-271 -253 -185 -165
11 17 371 394
-24 135 -375 -372
310 322 -255 -239
-283 -277 -205 -176
-354 -261 -375 -364
-364 -351 -247...

output:

224
597
249
331
56
190
182
399
550
291
390
164
201
411
492
390
519
153
711
461
206
555
555
387
224
362
455
160
633
521
95
516
462
466
380
236
381
239
421
491
439
580
239
750
311
696
543
558
328
389
449
139
276
476
298
380
202
577
402
228
295
507
687
467
342
379
157
341
501
229
394
507
380
357
253
40...

result:

ok 200000 numbers

Test #4:

score: 0
Accepted
time: 177ms
memory: 11292kb

input:

30 1 200000
0 37 33 33
0 0 33 37
0 45 -45 -45
0 0 -45 -45
0 88 49 49
0 0 49 88
0 110 -92 -92
0 0 -110 -92
0 139 129 129
0 0 129 139
0 174 162 162
0 0 162 174
0 205 -188 -188
0 0 -205 -188
0 236 -230 -230
0 0 -236 -230
0 239 -237 -237
0 0 -239 -237
0 259 -249 -249
0 0 -259 -249
0 286 262 262
0 0 262 ...

output:

524
345
141
565
642
330
425
662
370
337
419
230
765
347
240
235
299
317
373
252
432
574
581
348
378
395
262
424
230
393
497
592
442
347
603
491
225
194
483
364
386
736
343
378
677
676
652
479
594
579
566
298
164
672
554
427
158
293
405
447
455
560
240
462
564
276
270
455
359
446
544
228
400
428
456
...

result:

ok 200000 numbers

Test #5:

score: 0
Accepted
time: 168ms
memory: 11348kb

input:

30 1 200000
-9 17 5 5
-22 25 9 13
-26 31 17 26
-30 38 27 29
-44 53 33 45
-76 79 51 57
-86 91 -67 -66
-91 99 71 71
-95 105 78 79
-131 136 -89 -88
-141 147 -99 -96
-150 151 -113 -112
-162 170 115 127
-190 191 128 134
-219 222 -154 -147
-235 245 157 157
-235 244 -162 -157
-240 242 -205 -170
-262 271 21...

output:

296
549
423
276
550
641
344
51
94
382
478
472
346
325
370
298
333
289
173
579
1001
690
714
229
538
898
368
927
489
946
712
804
200
322
445
740
703
763
716
315
363
320
233
422
443
440
1016
713
463
888
795
673
369
679
413
512
161
539
1061
476
605
942
396
764
441
314
346
553
123
323
407
422
422
883
157...

result:

ok 200000 numbers

Test #6:

score: 0
Accepted
time: 234ms
memory: 11292kb

input:

100 1 200000
0 18 2 12
4 18 -2 12
-16 18 -2 -1
-16 -15 -2 17
-16 -1 18 18
24 33 -20 18
-25 33 -20 -6
-25 -20 -20 37
-25 -17 38 46
41 50 -29 46
-45 50 -29 -25
-45 -28 -29 50
-45 -26 51 61
56 56 -45 61
-54 56 -45 -42
-54 -48 -45 64
-54 -46 65 69
74 77 -50 69
-66 77 -50 -47
-66 -57 -50 93
-66 -55 94 12...

output:

716
1439
205
898
543
419
1043
374
568
445
720
928
1302
604
1502
529
495
344
488
19
957
127
1260
964
805
594
295
1143
781
814
913
1100
329
337
388
1286
629
561
922
61
497
522
501
645
757
1498
624
589
1340
713
446
1179
444
964
1541
806
965
1140
1397
563
1235
267
312
1314
1540
799
487
479
227
1646
354
...

result:

ok 200000 numbers

Test #7:

score: 0
Accepted
time: 129ms
memory: 11436kb

input:

9 1 200000
-1 1 -1 -1
-1 -1 -1 400
1 1 -1 400
-400 -1 400 400
1 400 400 400
-400 -400 -400 400
400 400 -400 400
-400 -1 -400 -400
1 400 -400 -400
-274 -11
-227 -378
-141 388
17 44
-365 87
-112 138
-357 -279
159 -223
299 -246
148 237
-50 -362
-101 -164
-232 -353
-133 110
39 -11
104 168
-75 296
323 -3...

output:

2669
2255
2935
2467
2858
2656
2484
2342
2459
2791
2094
2343
2285
2649
2434
2678
2777
2394
3066
2760
2576
2408
2231
2275
2938
2670
2881
2771
2527
2339
2672
2701
2173
2119
2357
2127
2957
2781
2598
2144
2139
2811
2307
2631
2735
2886
2409
2580
2633
2831
2693
3056
2781
2596
2862
2554
2378
2212
2549
2502
...

result:

ok 200000 numbers

Subtask #2:

score: 0
Time Limit Exceeded

Test #8:

score: 0
Time Limit Exceeded

input:

100 1 200000
-520000000 799999999 670000000 899999999
-870000000 -570000001 290000000 519999999
200000000 839999999 -770000000 769999999
480000000 949999999 -690000000 -1
-910000000 -390000001 380000000 939999999
370000000 879999999 850000000 889999999
-630000000 699999999 270000000 359999999
120000...

output:


result:


Subtask #3:

score: 0
Skipped

Dependency #2:

0%

Subtask #4:

score: 0
Wrong Answer

Test #21:

score: 0
Wrong Answer
time: 0ms
memory: 3828kb

input:

100 2 200
0 0 1 1
0 0 -1 -1
1 1 0 0
-1 -1 0 2
0 0 -1 -1
-1 -1 0 0
-1 -1 0 0
-1 -1 0 0
0 0 1 1
1 1 0 0
1 1 0 0
1 2 -1 0
1 1 0 0
-1 -1 0 0
-1 -1 0 0
1 1 0 0
0 1 1 1
-2 -1 0 0
-1 -1 0 0
-1 -1 0 0
0 0 -1 -1
0 0 -1 -1
0 0 1 1
-1 -1 0 0
-1 0 -1 -1
-1 -1 0 0
0 0 -1 -1
1 1 0 0
1 1 0 0
0 0 -1 -1
-1 0 1 1
-1 ...

output:


result:

wrong answer Answer contains longer sequence [length = 200], but output contains 0 elements

Subtask #5:

score: 0
Wrong Answer

Test #27:

score: 0
Wrong Answer
time: 0ms
memory: 3496kb

input:

100 2 400
930000000 979999999 950000000 979999999
800000000 829999999 830000000 939999999
980000000 999999999 970000000 989999999
-1000000000 -990000001 -1000000000 -960000001
950000000 979999999 -1000000000 -770000001
-970000000 -910000001 -950000000 -900000001
-970000000 -890000001 860000000 91999...

output:


result:

wrong answer Answer contains longer sequence [length = 400], but output contains 0 elements

Subtask #6:

score: 0
Skipped

Dependency #4:

0%

Subtask #7:

score: 0
Skipped

Dependency #6:

0%

Subtask #8:

score: 0
Skipped

Dependency #7:

0%

Subtask #9:

score: 0
Skipped

Dependency #8:

0%