QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#743874#5035. foo~zfs73210 47ms28976kbC++232.5kb2024-11-13 20:12:472024-11-13 20:12:50

Judging History

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

  • [2024-11-13 20:12:50]
  • 评测
  • 测评结果:10
  • 用时:47ms
  • 内存:28976kb
  • [2024-11-13 20:12:47]
  • 提交

answer

/*
 * _|_|_|_|_|  _|_|_|_|    _|_|_|  _|_|_|_|_|  _|_|_|      _|_|   
 *       _|    _|        _|                _|        _|  _|    _| 
 *     _|      _|_|_|      _|_|          _|      _|_|        _|   
 *   _|        _|              _|      _|            _|    _|     
 * _|_|_|_|_|  _|        _|_|_|      _|        _|_|_|    _|_|_|_| 
 */

#include <bits/stdc++.h>

constexpr int INF = 1E7;

namespace Solution {
  int Solve(int K, const std::vector<int> &arr) {
    int N = (int) arr.size(), ans = 0;
    std::vector dp(K + 1, std::vector(N, -INF));
    std::vector pre(K + 1, std::vector(N, -INF));
    std::vector pmx(K + 1, std::vector(N, -INF));
    std::vector suf(K + 1, std::vector(N, -INF));
    std::vector smx(K + 1, std::vector(N, -INF));

    dp[0][0] = 0;
    std::stack<int> sta;
    sta.emplace(0);

    for (int i = 1; i < N; i++) {
      for (int j = 1; j <= K; j++) {
        smx[j][i] = dp[j - 1][i - 1];
        pre[j][i] = dp[j - 1][i - 1] + 1;
        suf[j][i] = dp[j - 1][i - 1] + 1;
      }

      while (!sta.empty() && arr[i] > arr[sta.top()]) {
        int p = sta.top();
        for (int j = 1; j <= K; j++) {
          smx[j][i] = std::max(smx[j][i], smx[j][p]);
          pre[j][i] = std::max(pre[j][i], pre[j][p] + 1);
        }
        sta.pop();
      }

      int p = sta.top();
      for (int j = 1; j <= K; j++) {
        suf[j][i] = std::max(suf[j][i], suf[j][p] + 1);
        pmx[j][i] = std::max(pmx[j][i], pmx[j][p]);
      }
      sta.emplace(i);

      for (int j = 1; j <= K; j++) {
        pmx[j][i] = pre[j][i];
        suf[j][i] = std::max(suf[j][i], smx[j][i] + 1);
        dp[j][i] = std::max({suf[j][i], pre[j][i], pmx[j][i]});
      }
    }

    for (int i = 1; i < N; i++) { ans = std::max(ans, dp[K][i]); }
    return ans;
  }
}// namespace Solution

int main() {
#ifdef LOCAL
  freopen("task.in", "r", stdin);
  freopen("task.out", "w", stdout);
  freopen("task.err", "w", stderr);
#endif
  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);

  int N, K, pos = -1;
  std::cin >> N >> K;
  std::vector<int> arr(N), tmp(N);

  for (int i = 0; i < N; i++) {
    std::cin >> arr[i];
    if (arr[i] == N) { pos = i; }
  }

  for (int i = 0; i < N; i++) { tmp[i] = arr[(i + pos) % N]; }

  int ans = Solution::Solve(K, tmp);
  std::reverse(tmp.begin() + 1, tmp.end());
  ans = std::max(ans, Solution::Solve(K, tmp));
  std::cout << ans + 1 << '\n';

  return 0;
}

詳細信息

Subtask #1:

score: 0
Wrong Answer

Test #1:

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

input:

23 6
16 20 22 4 21 10 3 7 5 8 15 12 9 1 6 17 23 13 11 19 18 14 2

output:

20

result:

ok "20"

Test #2:

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

input:

13 6
13 9 3 4 12 6 5 1 8 10 11 7 2

output:

13

result:

ok "13"

Test #3:

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

input:

25 3
25 2 3 19 5 6 7 11 8 10 9 20 4 14 21 1 17 12 13 18 15 22 23 16 24

output:

16

result:

ok "16"

Test #4:

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

input:

25 9
1 11 10 23 9 24 7 8 19 3 5 21 18 12 15 16 17 13 2 20 14 22 4 6 25

output:

23

result:

ok "23"

Test #5:

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

input:

13 2
1 4 2 3 5 6 7 8 9 10 12 11 13

output:

12

result:

ok "12"

Test #6:

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

input:

17 5
4 2 3 6 5 1 7 8 13 16 11 12 9 14 15 10 17

output:

15

result:

ok "15"

Test #7:

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

input:

8 2
1 2 5 6 3 4 7 8

output:

8

result:

ok "8"

Test #8:

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

input:

11 5
3 11 2 10 6 5 1 4 8 7 9

output:

11

result:

ok "11"

Test #9:

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

input:

10 1
5 3 4 1 10 8 9 6 7 2

output:

6

result:

ok "6"

Test #10:

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

input:

16 2
15 12 14 9 11 13 1 3 10 8 5 2 16 4 6 7

output:

11

result:

wrong answer 1st words differ - expected: '9', found: '11'

Subtask #2:

score: 10
Accepted

Test #21:

score: 10
Accepted
time: 7ms
memory: 8272kb

input:

93943 1
87243 48984 50611 19218 77699 25025 85769 28141 13380 34875 42459 66419 53472 4367 48292 16894 92171 87263 42527 67085 30687 29235 27515 81053 31421 34864 83591 70491 75344 7026 50250 63402 26773 5330 36308 76399 80032 15501 16205 71750 73964 67876 68901 70548 2043 79979 89479 19784 38838 44...

output:

25

result:

ok "25"

Test #22:

score: 10
Accepted
time: 13ms
memory: 9144kb

input:

112118 1
24338 1586 3 108269 5 53472 80391 70331 9 15335 62487 28331 13 14 16564 94323 36681 108815 32632 44382 21 22 23 24 11758 40070 21518 51991 109983 30 45524 59784 33 2068 62111 36 37 38 39 89031 30508 42 43 16414 110006 34303 47 10331 44651 50 93957 95407 22019 88681 56605 12426 28498 58 59 8...

output:

281

result:

ok "281"

Test #23:

score: 10
Accepted
time: 30ms
memory: 24572kb

input:

391400 1
158965 280194 3 4 5 369036 92293 245923 57403 10 6887 280754 277300 110148 314164 135940 17 46573 126951 111447 301107 22 23 24 25 26 247952 28 342994 339309 23647 350245 33 299608 35 36 37 263236 232063 40 41 42 43 44 39280 46 299122 11961 380375 384513 51 318009 162567 54 55 56 27356 58 6...

output:

693

result:

ok "693"

Test #24:

score: 10
Accepted
time: 41ms
memory: 27412kb

input:

440571 1
243784 2 3 130039 61385 6 7 8 244611 260729 29014 12 326371 416098 15 293728 182717 66822 387603 156910 225815 413135 171756 315815 26444 302419 384825 37746 17634 391896 354575 426625 290920 34 49456 36 161212 212843 39 40 41 436888 43 102088 405279 46 47 77451 49 50 368530 52402 34143 54 ...

output:

665

result:

ok "665"

Test #25:

score: 10
Accepted
time: 21ms
memory: 16196kb

input:

237580 1
1 2 3 4 5 45736 171997 8 235046 10 11 186778 13 14 15 16 17 18 19 20 21 22 23 91724 25 147783 27 125261 29 30 27556 32 108919 76675 35 36 18966 212471 100584 11715 204252 77843 43 176763 18552 46 82644 48 49 50 51 191552 53 232631 160703 114013 69672 75193 59 60 207114 62 63 167312 83372 66...

output:

890

result:

ok "890"

Test #26:

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

input:

108629 1
1 2 3 35575 5 7205 104276 8 9 10 104552 12 13 99818 15 16 17 18 19 16579 21 74459 23 24 25 98758 27 30553 28622 105401 31 32 33 98277 29214 36 37 38 34671 99851 41 42 20159 65626 49334 58829 47 48 15553 50 16448 157 96610 71139 51449 24593 66195 11741 5738 45685 61 76006 91433 64 13205 66 6...

output:

549

result:

ok "549"

Test #27:

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

input:

7474 1
6087 2 3 3276 2246 1022 4790 8 9 10 11 3555 13 14 5187 16 17 18 5222 2852 21 3905 23 2069 25 26 27 6248 29 30 31 32 33 3467 35 5413 37 38 39 40 41 42 43 44 45 46 47 6366 6217 6683 4855 86 6754 7423 55 56 3421 58 7129 6415 2719 964 63 7191 6681 5871 2830 68 1114 70 71 4387 73 74 75 76 77 394 7...

output:

117

result:

ok "117"

Test #28:

score: 10
Accepted
time: 21ms
memory: 20916kb

input:

327474 1
210193 138271 6815 114087 210548 236834 247829 287541 142327 57519 226037 185228 4602 111639 172642 13926 122775 323427 276201 198051 175153 262523 182602 84772 315273 161585 146845 231049 98201 170526 58890 213780 86346 161912 320369 55154 202159 224318 92082 314469 92925 225630 89586 2190...

output:

31

result:

ok "31"

Test #29:

score: 10
Accepted
time: 16ms
memory: 12572kb

input:

170736 1
1312 68283 94512 153956 14227 44793 18760 153190 59267 3745 39898 34452 88526 153153 151245 72089 72230 139449 97869 105574 61308 52310 63909 66185 76461 57922 15750 32965 63821 123214 62562 154258 26229 154847 29694 20613 163634 112566 78733 77415 148297 8311 18695 146847 137996 128167 946...

output:

27

result:

ok "27"

Test #30:

score: 10
Accepted
time: 8ms
memory: 6904kb

input:

70972 1
42126 45376 26395 39090 6557 69493 22740 10263 3057 30503 16364 27796 52951 62922 17830 66723 34385 8039 28194 11087 10500 9835 5892 8917 21894 16673 49698 55082 66683 54472 60557 6953 739 65333 59825 23918 39644 59672 59765 31158 30188 37359 60653 64449 28747 7064 53759 15156 11687 33993 33...

output:

25

result:

ok "25"

Test #31:

score: 10
Accepted
time: 47ms
memory: 28976kb

input:

471980 1
315450 386066 223827 468592 231628 77257 181339 466496 85446 27241 269600 85959 141799 29249 162311 264524 137245 205794 349273 166576 131873 5521 368496 302373 19082 283842 82343 281817 25429 161084 307699 192224 143156 188759 279732 138312 341989 400389 280646 404120 362537 182646 194306 ...

output:

32

result:

ok "32"

Test #32:

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

input:

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

output:

141837

result:

ok "141837"

Test #33:

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

input:

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

output:

48198

result:

ok "48198"

Test #34:

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

input:

28730 1
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173...

output:

14366

result:

ok "14366"

Test #35:

score: 10
Accepted
time: 9ms
memory: 8116kb

input:

89450 1
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173...

output:

44726

result:

ok "44726"

Subtask #3:

score: 0
Wrong Answer

Test #36:

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

input:

1992 25
144 612 1315 1966 1779 1773 1529 625 36 1849 1783 1441 1388 1558 1258 724 137 397 542 353 1162 1213 406 792 1317 882 994 298 1864 1969 103 449 508 1501 89 1721 195 778 657 222 1152 1780 613 743 1206 694 829 142 69 1973 1465 1343 655 1540 155 146 350 491 759 1695 1082 1357 1329 1745 232 1850 ...

output:

232

result:

wrong answer 1st words differ - expected: '237', found: '232'

Subtask #4:

score: 0
Skipped

Dependency #1:

0%

Subtask #5:

score: 0
Skipped

Dependency #4:

0%

Subtask #6:

score: 0
Skipped

Dependency #2:

100%
Accepted

Dependency #5:

0%