QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#618759#9249. Elimination Series Once MoreDINGAC ✓328ms36132kbC++179.5kb2024-10-07 09:56:452024-10-07 09:56:46

Judging History

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

  • [2024-10-07 09:56:46]
  • 评测
  • 测评结果:AC
  • 用时:328ms
  • 内存:36132kb
  • [2024-10-07 09:56:45]
  • 提交

answer

#include <bits/stdc++.h>
#pragma GCC optimize(3)
#define int long long
#define llu unsigned long long
#define endl "\n"
#define inf 0x3f3f3f3f
#define debug cout << "****************" << endl
#define bit(x) (1LL << x)
using namespace std;
typedef pair<int, int> PII;

const int N = 3e6;

int c[N];
int n;

int lowbit(int x)
{
    return x & (-x);
}

void updata(int i, int k)  //大于等于传入位置的值+1  c[i]记前i个位置人数(1->i)
{                          //使用树状数组便于更新
    while (i <= bit(n))
    {
        c[i] += k;
        i += lowbit(i);
    }
}

int getsum(int i)
{
    int res = 0;
    while (i > 0)
    {
        res += c[i];
        i -= lowbit(i);
    }
    return res;
}

void solve()
{
    int k;
    cin >> n >> k;
    int len = bit(n);
    vector<int> a(len + 7);
    vector<int> g(len + 7);
    for (int i = 1; i <= len; i++)
    {
        cin >> a[i];
        g[a[i]] = i;
    }
    vector<int> res(len + 7);
    for (int i = 1; i <= len; i++)
    {
        int ans = 0; 
        int j = n;
        int st = bit(j) - 1;
        int l = 1, r = len;
        while (l < r)
        {
            int mid = (l + r) / 2;
            int fd = getsum(r) - getsum(l - 1);
            if (fd + k >= st && i - 1 >= st)//由于是按实力便利,当前树状数组里存的数均小于当前数,所以fd(区间人数)+k置换名额就是可胜利次数。胜利j轮需要胜利bit(j)-1次;
            {
                ans = j;
                break;
            }
            j--;
            st = bit(j) - 1;
            if (g[i] >= l && g[i] <= mid)//这个二分恰好卡上二叉树的结构
                r = mid;
            else
                l = mid + 1;
        }
        res[g[i]] = ans;
        updata(g[i], 1);
    }
    for (int i = 1; i <= len; i++)
        cout << res[i] << " ";
    cout << endl;
}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int T = 1;
    // cin >> T;
    while (T--)
        solve();
    return 0;
}
// 题解:可以看出对于一个人,他的比赛赢一把,赢两把,赢三把所需要有1个人,3个人,7个人比他小且比他小的在某个区间内(这里有点类似于线段树的分块思想,总共log层),所以对于某个人只需要查询对于某个区间内有多少人比他小,可以使用线段树或者树状数组,这里需要注意的是,使用树状数组要从小到大枚举值所在的位置而不是从左到右枚举位置
// 这段代码是用来解决一个问题的,涉及到比赛获胜人数的统计和区间查询。下面是对各部分的详细讲解:

// 头文件和宏定义:

// 引入标准库和一些宏定义以简化代码,例如 #define int long long 使得 int 变为 long long,避免整数溢出。
// 全局变量:

// c[N]:树状数组,用于维护频率。
// n:输入的比赛人数。
// 低位提取函数 lowbit(int x):

// 计算 x 的最低位的 1 的值,这在更新树状数组时很重要。
// 更新函数 updata(int i, int k):

// 在树状数组中更新索引 i,增加值 k。通过不断加上 lowbit 来更新所有相关的父节点。
// 求和函数 getsum(int i):

// 计算从 1 到 i 的前缀和,通过 lowbit 来累加值。
// 主解题函数 solve():

// 读取输入 n 和 k。
// 初始化数组 a 和 g,分别存储比赛结果和其索引。
// 对于每个选手,计算能够获胜的最大场数 ans。
// 使用二分查找来确定在某个区间内有多少人比当前选手小,利用 getsum 查询。
// 通过调用 updata 更新当前选手的索引频率。
// 主函数 main():

// 设置输入输出流以提高效率,运行 solve() 函数。
// 总的来说,这段代码运用树状数组高效地解决了有关人数查询和统计的问题,利用了频率更新和二分查找的策略来优化查询过程。



// 您说:
// for (int i = 1; i <= len; i++) 
//     {
//         int ans = 0;
//         int j = n;
//         int st = bit(j) - 1;
//         int l = 1, r = len;
//         while (l < r)
//         {
//             int mid = (l + r) / 2;
//             int fd = getsum(r) - getsum(l - 1);
//             if (fd + k >= st && i - 1 >= st)
//             {
//                 ans = j;
//                 break;
//             }
//             j--;
//             st = bit(j) - 1;
//             if (g[i] >= l && g[i] <= mid)
//                 r = mid;
//             else
//                 l = mid + 1;
//         }
//         res[g[i]] = ans;
//         updata(g[i], 1);
//     }讲一下这段
// ChatGPT 说:
// ChatGPT
// 这段代码的主要目的是在给定的比赛人数和获胜条件下,计算每个选手能获得的最大比赛胜利场数。下面逐行解析这段代码:

// 循环遍历选手:

// cpp
// 复制代码
// for (int i = 1; i <= len; i++) 
// 遍历每个选手,从 1 到 len。

// 初始化变量:

// cpp
// 复制代码
// int ans = 0;
// int j = n;
// int st = bit(j) - 1;
// int l = 1, r = len;
// ans 用于存储当前选手能够获胜的最大场数。
// j 初始化为 n,表示当前可能的最大获胜场数。
// st 为当前 j 值对应的区间长度减一,表示所有可能的胜利场次。
// l 和 r 是二分查找的边界。
// 二分查找:

// cpp
// 复制代码
// while (l < r)
// 开始二分查找,寻找在某个区间内的胜利条件。

// 计算中间值:

// cpp
// 复制代码
// int mid = (l + r) / 2;
// int fd = getsum(r) - getsum(l - 1);
// 计算中间值 mid,用于分割区间。
// fd 表示在 [l, r] 区间内的选手数量,使用 getsum 计算前缀和。
// 检查胜利条件:

// cpp
// 复制代码
// if (fd + k >= st && i - 1 >= st)
// {
//     ans = j;
//     break;
// }
// 如果区间内的选手数量加上允许的额外胜利 k 大于等于 st,且当前选手的索引 i - 1 也大于等于 st,则说明当前选手可以在最大场数 j 下获胜,更新 ans 并跳出循环。
// 调整查找范围:

// cpp
// 复制代码
// j--;
// st = bit(j) - 1;
// if (g[i] >= l && g[i] <= mid)
//     r = mid;
// else
//     l = mid + 1;
// 减少 j,以查看更小的可能获胜场数。
// 更新 st 为新的 j 值对应的区间长度减一。
// 根据当前选手的索引 g[i] 调整二分查找的范围:
// 如果 g[i] 在 l 和 mid 之间,说明当前选手可能在这个区间内,因此缩小右边界 r。
// 否则,将左边界 l 移动到 mid + 1。
// 存储结果和更新频率:

// cpp
// 复制代码
// res[g[i]] = ans;
// updata(g[i], 1);
// 将当前选手的最大获胜场数 ans 存入结果数组 res。
// 调用 updata 更新树状数组,记录当前选手的胜利状态。
// 通过这段代码,程序实现了根据选手的表现和查询条件,动态计算并更新每个选手的最大获胜场数。


// 2/2

// 您说:
// 帮我讲一下所有变量含义
// ChatGPT 说:
// ChatGPT
// 这段代码中的变量用于处理比赛中选手的获胜情况。下面是所有变量的含义及作用的详细解释:

// 全局变量:

// int c[N];
// 树状数组,用于记录每个位置上有多少个选手胜利。
// int n;
// 比赛选手的人数。
// solve() 函数中的局部变量:

// int k;

// 题目中输入的一个值,通常用于控制在某些情况下允许的额外胜利次数或胜利的某些限制条件。
// int len = bit(n);

// bit(n) 相当于 2^n,len 表示比赛的总长度,即所有可能的状态数量。
// vector<int> a(len + 7);

// 存储输入数据的数组,大小为 len + 7,比实际 len 稍大一些,方便边界操作。
// vector<int> g(len + 7);

// 该数组用于存储选手 a 的排名索引,即 g[a[i]] = i 表示值为 a[i] 的选手在第 i 个位置。
// vector<int> res(len + 7);

// 存储每个选手可以获胜的最大场次的数组。res[g[i]] 表示第 i 个选手能够取得的最大获胜场数。
// int ans = 0;

// 当前选手能取得的最大获胜场数。初始值为 0,最终结果会存储在 res 中。
// int j = n;

// 当前选手可能的最大获胜场数,初始值设为 n。在每次计算失败后会递减,用于探索不同的胜利场数。
// int st = bit(j) - 1;

// 表示在 j 场胜利时,所需有的比当前选手弱的选手数量。bit(j) 相当于 2^j,st 代表 2^j - 1,即选手需要至少比该值更多的人数要比他小。
// int l = 1, r = len;

// 用于二分查找的左右边界,初始为整个选手范围。
// int mid = (l + r) / 2;

// 二分查找中的中点,用于调整查找范围。
// int fd = getsum(r) - getsum(l - 1);

// fd 表示在 [l, r] 区间内的选手数量,通过树状数组 getsum() 函数计算。
// 辅助函数中的变量:

// int lowbit(int x)

// x & (-x),返回 x 最低位的 1 的值,用于树状数组中快速定位更新范围。
// void updata(int i, int k)

// i 表示要更新的位置,k 为更新的值。
// 在树状数组中增加索引 i 的值 k,并更新其父节点,直到超过范围。
// int getsum(int i)

// i 表示要查询的前缀和的终点位置。
// 通过树状数组,返回从 1 到 i 的前缀和,用于计算特定区间内选手的数量。
// 这些变量的组合和操作,形成了一种高效的基于树状数组的动态查询机制,用于确定在比赛中每个选手能够取得的最大获胜场数。

这程序好像有点Bug,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3548kb

input:

2 1
1 2 3 4

output:

0 1 1 2 

result:

ok 4 number(s): "0 1 1 2"

Test #2:

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

input:

3 5
2 4 7 5 3 8 6 1

output:

1 2 2 2 1 3 2 0 

result:

ok 8 numbers

Test #3:

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

input:

3 0
1 2 7 4 5 8 3 6

output:

0 1 2 0 0 3 0 1 

result:

ok 8 numbers

Test #4:

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

input:

3 5
3 7 1 2 4 8 5 6

output:

1 2 0 1 2 3 2 2 

result:

ok 8 numbers

Test #5:

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

input:

3 3
3 4 8 2 7 6 1 5

output:

1 2 3 1 2 2 0 2 

result:

ok 8 numbers

Test #6:

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

input:

3 3
4 2 6 8 3 5 1 7

output:

2 1 2 3 1 2 0 2 

result:

ok 8 numbers

Test #7:

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

input:

3 4
5 8 1 3 2 4 6 7

output:

2 3 0 1 1 2 2 2 

result:

ok 8 numbers

Test #8:

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

input:

3 1
7 3 8 6 5 2 4 1

output:

2 1 3 1 2 1 2 0 

result:

ok 8 numbers

Test #9:

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

input:

3 4
1 2 5 3 6 7 4 8

output:

0 1 2 1 2 2 2 3 

result:

ok 8 numbers

Test #10:

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

input:

3 2
2 4 8 6 3 7 5 1

output:

1 2 3 2 1 2 2 0 

result:

ok 8 numbers

Test #11:

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

input:

10 780
495 929 348 345 426 543 187 419 839 812 320 1018 251 284 944 258 721 640 730 528 316 247 313 195 809 948 261 615 805 213 388 894 1005 77 599 636 881 444 144 923 240 520 592 465 96 455 563 943 237 860 531 269 106 989 740 506 23 224 84 475 108 718 3 16 731 436 591 627 672 300 573 613 253 637 46...

output:

8 9 8 8 8 9 7 8 9 9 8 9 7 8 9 8 9 9 9 9 8 7 8 7 9 9 8 9 9 7 8 9 9 6 9 9 9 8 7 9 7 9 9 8 6 8 9 9 7 9 9 8 6 9 9 8 4 7 6 8 6 9 1 4 9 8 9 9 9 8 9 9 7 9 8 9 9 9 6 7 6 7 9 9 9 9 9 7 6 8 8 8 9 9 6 6 9 9 9 8 9 9 6 9 9 8 6 7 8 8 3 8 8 9 6 9 7 8 8 9 9 9 9 8 7 9 8 8 7 7 9 9 9 9 9 8 8 9 6 9 9 9 9 9 9 6 9 8 8 9 ...

result:

ok 1024 numbers

Test #12:

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

input:

10 175
10 301 861 580 539 53 822 97 923 133 952 870 438 265 55 825 557 784 976 584 993 897 981 259 875 18 106 399 1019 692 336 485 491 9 565 114 738 128 678 23 562 538 869 787 768 385 494 640 655 666 332 930 798 418 801 266 1009 846 54 37 967 139 394 802 168 503 233 848 340 329 240 898 251 1023 779 ...

output:

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

result:

ok 1024 numbers

Test #13:

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

input:

10 15
829 331 590 799 39 456 888 779 60 411 796 148 678 930 101 653 81 429 4 457 455 703 780 260 251 21 291 122 366 177 665 326 114 96 445 123 154 340 522 113 895 170 144 857 447 865 874 891 679 541 867 731 436 219 871 596 285 1008 435 263 881 798 16 275 14 97 845 269 974 782 343 404 561 540 443 482...

output:

6 4 5 6 4 5 7 5 4 4 6 4 5 7 4 5 4 5 2 5 5 5 6 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 5 4 7 4 4 6 5 6 7 7 5 5 6 5 4 4 6 5 4 9 4 4 7 6 4 4 3 4 6 4 8 6 4 4 5 5 4 5 7 7 4 4 4 4 4 5 9 4 4 7 5 8 4 4 6 4 6 9 6 4 8 5 5 4 4 4 5 4 5 5 4 4 4 4 5 4 5 5 4 5 4 4 5 4 4 6 4 9 5 6 8 6 5 6 6 7 4 4 4 4 4 4 4 3 4 4 4 4 6 7 7 5 ...

result:

ok 1024 numbers

Test #14:

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

input:

10 215
910 367 1011 675 689 697 604 665 730 306 743 225 210 1008 546 439 411 475 529 640 54 505 420 481 213 406 1012 933 392 121 751 554 265 550 621 537 212 908 49 918 768 125 16 927 507 863 1000 44 900 7 645 543 784 461 569 669 984 249 189 727 497 994 719 282 666 691 58 795 119 515 682 150 53 494 6...

output:

9 8 9 9 9 9 9 9 9 8 9 7 7 9 8 8 8 8 8 9 5 8 8 8 7 8 9 9 8 6 9 8 8 8 9 8 7 9 5 9 9 6 4 9 8 9 9 5 9 2 9 8 9 8 8 9 9 7 7 9 8 9 9 8 9 9 5 9 6 8 9 7 5 8 9 8 9 9 7 9 8 9 9 9 8 9 7 5 8 7 9 8 8 6 9 9 8 6 5 9 8 8 9 8 7 9 9 8 6 4 9 6 9 8 8 9 7 8 9 8 5 8 8 9 8 9 8 9 9 8 8 7 5 9 9 9 9 9 8 8 9 9 6 8 6 8 6 9 9 9 ...

result:

ok 1024 numbers

Test #15:

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

input:

10 358
714 252 544 999 507 766 720 169 379 856 698 40 910 610 564 125 278 426 285 205 746 43 23 284 81 525 848 540 827 604 630 741 27 313 452 724 9 745 762 263 44 901 864 445 418 596 310 719 988 536 799 625 202 895 412 153 847 145 353 297 133 260 717 893 158 314 90 356 108 315 1016 510 1015 1007 747...

output:

9 7 9 9 8 9 9 7 8 9 9 5 9 9 9 6 8 8 8 7 9 5 4 8 6 9 9 9 9 9 9 9 4 8 8 9 3 9 9 8 5 9 9 8 8 9 8 9 9 9 9 9 7 9 8 7 9 7 8 8 7 8 9 9 7 8 6 8 6 8 9 8 9 9 9 7 9 9 7 9 6 9 9 7 8 7 9 7 8 7 9 9 7 9 9 4 8 9 8 9 9 9 7 9 6 9 8 9 9 9 8 9 9 9 8 3 8 9 4 7 8 8 8 8 8 8 9 6 8 6 9 7 9 9 8 7 9 9 9 9 7 8 9 8 9 8 9 7 8 9 ...

result:

ok 1024 numbers

Test #16:

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

input:

10 409
720 603 348 938 361 756 506 176 661 192 318 599 115 548 681 692 915 148 721 93 424 707 404 392 695 342 247 799 743 814 82 120 365 428 461 355 184 372 224 810 225 569 630 800 480 226 802 867 136 592 723 412 248 619 817 67 891 72 74 315 624 250 1001 73 536 397 859 553 647 143 575 733 468 298 71...

output:

9 9 8 9 8 9 8 7 9 7 8 9 6 9 9 9 9 7 9 6 8 9 8 8 9 8 7 9 9 9 6 6 8 8 8 8 7 8 7 9 7 9 9 9 8 7 9 9 7 9 9 8 7 9 9 6 9 6 6 8 9 7 9 6 9 8 9 9 9 7 9 9 8 8 9 6 9 9 8 9 9 9 7 8 8 9 5 9 7 7 7 9 9 9 8 7 8 9 8 8 8 8 4 8 8 9 9 8 6 9 9 9 2 9 7 9 8 9 8 7 8 7 9 6 6 9 9 9 7 9 9 8 9 9 9 9 8 9 8 8 8 9 9 9 8 9 6 9 8 9 ...

result:

ok 1024 numbers

Test #17:

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

input:

10 700
469 249 763 385 977 949 423 11 825 442 744 993 553 908 410 860 465 291 751 234 50 897 64 346 481 1010 444 88 605 268 531 167 853 367 389 191 784 723 783 277 916 649 418 932 516 972 714 905 358 364 334 293 391 337 785 837 721 568 555 102 456 554 165 141 253 852 43 109 699 963 915 611 16 156 83...

output:

8 7 9 8 9 9 8 3 9 8 9 9 9 9 8 9 8 8 9 7 5 9 6 8 8 9 8 6 9 8 9 7 9 8 8 7 9 9 9 8 9 9 8 9 9 9 9 9 8 8 8 8 8 8 9 9 9 9 9 6 8 9 7 7 7 9 5 6 9 9 9 9 4 7 6 8 9 9 9 7 6 5 8 8 9 8 8 8 9 7 8 9 8 8 7 9 7 9 6 6 8 9 5 9 9 8 9 8 9 9 9 8 9 8 8 9 7 9 8 6 8 6 9 9 6 9 9 5 8 7 8 9 8 8 9 6 7 7 9 8 9 9 9 9 9 6 9 9 7 6 ...

result:

ok 1024 numbers

Test #18:

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

input:

10 655
971 111 296 479 453 490 163 686 195 492 1014 762 1021 15 351 618 137 181 853 758 876 598 703 486 125 35 41 266 603 682 733 294 391 967 373 508 860 501 1018 1003 642 365 531 883 89 674 869 311 442 734 886 165 701 139 447 271 540 190 983 474 816 769 1015 101 896 904 692 627 643 750 615 20 406 5...

output:

9 6 8 8 8 8 7 9 7 8 9 9 9 3 8 9 7 7 9 9 9 9 9 8 6 5 5 8 9 9 9 8 8 9 8 8 9 8 9 9 9 8 9 9 6 9 9 8 8 9 9 7 9 7 8 8 9 7 9 8 9 9 9 6 9 9 9 9 9 9 9 4 8 8 7 8 7 9 9 8 2 9 9 9 9 9 9 5 8 7 9 9 7 8 8 6 7 7 7 8 9 9 9 9 9 7 9 9 9 5 9 9 7 7 9 9 8 9 7 6 7 8 9 8 4 9 8 9 9 9 8 9 8 8 9 5 8 7 4 9 9 9 6 8 8 9 8 9 9 8 ...

result:

ok 1024 numbers

Test #19:

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

input:

10 827
692 816 52 570 178 260 248 531 852 777 232 378 955 632 325 256 328 599 802 165 966 493 166 125 488 942 965 716 947 276 156 894 194 742 933 185 384 152 277 333 991 424 487 435 423 504 113 106 307 205 745 155 654 226 16 518 884 757 1009 133 401 392 451 510 682 717 922 608 148 206 854 355 728 51...

output:

9 9 5 9 7 8 7 9 9 9 7 8 9 9 8 8 8 9 9 7 9 8 7 6 8 9 9 9 9 8 7 9 7 9 9 7 8 7 8 8 9 8 8 8 8 8 6 6 8 7 9 7 9 7 4 9 9 9 9 7 8 8 8 8 9 9 9 9 7 7 9 8 9 8 7 7 5 7 8 9 8 8 8 9 9 7 9 6 9 8 6 6 4 9 8 5 9 6 9 9 7 9 9 6 9 9 8 8 9 9 9 9 9 9 8 2 6 9 9 9 7 8 9 9 2 8 7 8 8 8 7 9 9 8 9 8 4 9 9 8 9 8 8 9 4 8 9 9 9 6 ...

result:

ok 1024 numbers

Test #20:

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

input:

10 328
454 408 810 540 254 321 33 682 91 53 398 761 1023 243 581 545 825 892 100 356 17 326 487 878 787 756 996 707 770 924 945 272 428 686 339 908 390 645 238 337 517 364 717 404 533 394 849 435 894 947 482 806 657 39 781 946 75 656 129 476 676 984 456 412 463 160 562 592 345 141 145 501 921 991 21...

output:

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

result:

ok 1024 numbers

Test #21:

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

input:

10 825
601 142 625 471 287 405 117 857 340 984 863 530 575 994 436 394 529 25 141 332 735 966 1 831 673 896 89 272 649 81 384 242 864 817 174 382 145 469 577 715 893 275 914 455 667 169 179 521 305 925 976 213 40 380 659 499 918 725 561 616 948 924 1022 721 235 485 85 781 540 52 892 982 254 461 381 ...

output:

9 7 9 8 8 8 6 9 8 9 9 9 9 9 8 8 9 4 7 8 9 9 0 9 9 9 6 8 9 6 8 7 9 9 7 8 7 8 9 9 9 8 9 8 9 7 7 9 8 9 9 7 5 8 9 8 9 9 9 9 9 9 9 9 7 8 6 9 9 5 9 9 7 8 8 9 9 6 9 9 9 9 8 4 5 7 9 9 8 5 9 9 9 7 9 6 8 9 2 6 9 8 9 7 7 9 9 9 9 9 9 7 8 8 9 9 9 6 9 8 7 9 9 6 9 9 9 4 9 8 9 9 9 8 7 8 7 8 7 8 9 8 4 9 9 9 6 7 7 9 ...

result:

ok 1024 numbers

Test #22:

score: 0
Accepted
time: 328ms
memory: 35988kb

input:

20 0
179487 921757 700836 1026745 871114 487101 416568 943369 555729 702080 475044 257810 489454 716476 879881 237658 884615 645342 654881 754504 537330 488794 60810 581898 627225 134547 267586 35544 535278 202909 1006004 182486 863804 12271 705426 1000913 315415 495258 494119 323180 59354 347058 62...

output:

0 1 0 5 1 0 0 2 0 2 1 0 0 1 3 0 3 0 0 1 1 0 0 2 2 0 1 0 1 0 4 0 1 0 0 3 0 2 1 0 0 1 0 2 1 0 6 0 4 0 0 1 0 1 0 2 2 0 0 1 0 3 0 1 4 0 0 1 2 0 0 1 0 1 0 3 0 1 2 0 2 0 1 0 3 0 0 1 1 0 12 0 2 0 1 0 0 1 4 0 0 1 2 0 0 3 0 1 0 1 0 2 1 0 2 0 0 1 3 0 0 1 0 5 0 1 2 0 1 0 0 3 1 0 0 2 1 0 4 0 2 0 0 1 1 0 2 0 0 5...

result:

ok 1048576 numbers

Test #23:

score: 0
Accepted
time: 317ms
memory: 35864kb

input:

20 0
423991 752898 398498 684927 789044 263019 482251 912839 731501 161924 299043 221772 386164 726231 81052 522548 2147 664063 669633 811292 646801 487230 645801 231433 697608 767873 119403 655574 294512 625240 464604 171777 37789 989183 13473 24697 1013507 285860 816836 313163 256565 724812 246357...

output:

0 2 0 1 1 0 0 5 3 0 1 0 0 2 0 1 0 1 0 4 2 0 1 0 0 3 0 1 0 2 1 0 0 2 0 1 3 0 1 0 0 2 1 0 0 1 0 6 4 0 1 0 0 2 0 1 1 0 0 3 1 0 0 2 0 1 2 0 0 3 1 0 0 5 1 0 0 1 2 0 2 0 1 0 1 0 4 0 0 3 0 1 2 0 1 0 0 1 3 0 2 0 0 1 8 0 0 1 1 0 2 0 1 0 0 3 0 1 2 0 4 0 1 0 0 2 1 0 6 0 1 0 1 0 2 0 1 0 0 2 1 0 3 0 0 1 0 4 2 0 ...

result:

ok 1048576 numbers

Test #24:

score: 0
Accepted
time: 326ms
memory: 35956kb

input:

20 0
983530 824894 353093 559444 613542 519778 1010412 455455 935622 219374 221225 1002197 688110 472174 221344 689249 527925 36045 510374 449980 724144 993684 416271 594751 888484 336792 425268 493926 392740 391689 841678 822738 12764 433848 349413 450603 182285 354617 758953 176599 70237 340919 10...

output:

2 0 0 1 1 0 6 0 1 0 0 3 1 0 0 2 2 0 1 0 0 4 0 1 3 0 0 1 1 0 2 0 0 1 0 2 0 1 4 0 0 1 0 3 0 1 0 2 0 3 0 1 1 0 2 0 0 5 0 1 0 2 0 1 1 0 2 0 0 1 0 4 1 0 0 2 0 1 0 3 0 2 1 0 7 0 1 0 0 3 1 0 0 1 2 0 0 1 2 0 1 0 0 4 0 2 0 1 1 0 0 3 0 2 0 1 0 1 0 3 0 5 1 0 1 0 2 0 4 0 0 1 0 2 0 1 2 0 1 0 3 0 1 0 1 0 6 0 0 2 ...

result:

ok 1048576 numbers

Test #25:

score: 0
Accepted
time: 322ms
memory: 35980kb

input:

20 0
473443 822631 836606 745020 669384 831958 929557 812459 979454 261979 335172 118201 544502 229223 877541 915721 504368 226689 582157 166448 910835 805293 989769 735782 836472 212234 901652 203944 246343 341883 923372 761793 496413 774045 10709 822705 804842 393237 234688 760980 575433 264037 29...

output:

0 1 2 0 0 1 3 0 4 0 1 0 1 0 0 2 1 0 2 0 1 0 5 0 1 0 2 0 0 1 3 0 0 1 0 3 2 0 0 1 1 0 0 6 2 0 0 1 0 1 0 2 0 1 0 3 1 0 2 0 0 4 0 1 0 1 8 0 2 0 1 0 1 0 0 3 2 0 0 1 0 1 0 3 0 2 1 0 2 0 0 1 1 0 0 4 1 0 3 0 1 0 2 0 2 0 0 1 4 0 0 1 2 0 1 0 1 0 3 0 0 2 1 0 0 1 5 0 2 0 1 0 0 4 1 0 3 0 0 1 1 0 0 2 0 6 0 1 2 0 ...

result:

ok 1048576 numbers

Test #26:

score: 0
Accepted
time: 313ms
memory: 35948kb

input:

20 0
379980 596897 473700 685210 871737 592347 265581 99773 654162 711671 796026 221716 77951 211806 1016499 68541 105291 832026 37890 741817 787 338525 847057 564452 291439 25137 796527 274136 516811 336906 65693 431115 565546 913432 505987 731031 411514 962171 317881 69424 7338 181350 326333 89987...

output:

0 1 0 2 3 0 1 0 0 1 2 0 0 1 5 0 0 2 0 1 0 1 4 0 1 0 3 0 2 0 0 1 0 2 0 1 0 4 1 0 0 1 0 3 1 0 2 0 0 6 0 1 2 0 1 0 0 1 2 0 0 3 1 0 0 3 1 0 0 1 2 0 0 2 0 1 4 0 1 0 0 3 0 1 2 0 1 0 1 0 0 2 1 0 5 0 2 0 0 1 1 0 4 0 0 1 0 3 2 0 1 0 1 0 0 2 1 0 3 0 0 1 2 0 1 0 0 8 0 3 1 0 0 2 1 0 1 0 0 2 5 0 1 0 0 1 0 2 1 0 ...

result:

ok 1048576 numbers

Test #27:

score: 0
Accepted
time: 151ms
memory: 36132kb

input:

20 966077
920272 22829 905052 391939 529694 220017 113245 305146 1033496 776070 372388 649193 372732 578999 535089 376914 300958 674096 713438 294435 185108 175377 843411 186645 326129 937577 777304 855769 317353 63291 166972 152975 982092 882338 296632 371732 94559 247688 915006 853946 1012694 9336...

output:

19 14 19 18 19 17 16 18 19 19 18 19 18 19 19 18 18 19 19 18 17 17 19 17 18 19 19 19 18 15 17 17 19 19 18 18 16 17 19 19 19 19 19 18 19 19 18 18 17 19 18 19 8 19 17 19 18 15 18 18 19 19 18 19 18 18 19 19 18 19 18 15 19 19 19 19 19 19 19 19 18 19 19 19 18 19 19 19 19 19 18 19 19 19 19 18 19 19 17 10 1...

result:

ok 1048576 numbers

Test #28:

score: 0
Accepted
time: 136ms
memory: 35928kb

input:

20 555721
1021880 172635 932280 918167 428846 525908 637187 103654 49068 457344 839373 885403 875027 863134 159977 579040 304249 818545 817257 382257 340884 241982 600075 712988 202019 851311 748360 695531 253852 133923 1008492 733146 54917 186299 303527 503548 507480 252648 624742 477048 106320 821...

output:

19 17 19 19 18 19 19 16 15 18 19 19 19 19 17 19 18 19 19 18 18 17 19 19 17 19 19 19 17 17 19 19 15 17 18 18 18 17 19 18 16 19 19 18 19 18 19 19 19 19 18 18 19 19 19 18 18 18 19 17 18 19 19 18 19 18 19 18 19 18 16 18 18 19 16 19 19 19 18 17 18 19 17 17 14 17 17 19 19 19 17 19 19 17 19 18 19 18 19 19 ...

result:

ok 1048576 numbers

Test #29:

score: 0
Accepted
time: 304ms
memory: 36104kb

input:

20 2
87510 685288 54938 588070 730372 367883 146344 699592 300414 900908 862877 34670 608547 282283 117736 44808 999805 244617 341801 858399 835822 519712 716403 614366 485823 268639 172640 546962 812810 157814 475854 213833 81808 987188 847699 726734 206379 1012914 844523 385962 511314 353768 94378...

output:

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

result:

ok 1048576 numbers

Test #30:

score: 0
Accepted
time: 295ms
memory: 35952kb

input:

20 3
924274 728807 143468 851897 609988 262663 982977 610373 135163 134795 923793 569204 875986 702834 971502 187748 476516 975902 30626 644269 750325 1008247 323883 860636 159423 598401 812886 286710 132495 750781 261871 354651 706866 180913 835118 817970 433926 930245 403851 555752 127938 224375 6...

output:

4 3 2 3 2 2 6 2 2 2 4 2 3 3 5 2 2 5 2 2 3 6 2 4 2 3 4 2 2 3 2 3 3 2 4 4 2 5 2 2 2 2 3 3 2 5 2 3 2 2 3 4 3 2 4 2 2 8 2 3 2 3 7 2 3 5 2 2 4 3 2 2 4 2 2 2 3 3 2 5 4 5 2 3 2 5 2 2 3 3 2 4 2 2 3 2 2 3 4 7 4 2 2 2 2 6 2 2 2 3 3 3 2 3 2 4 3 2 7 2 2 3 2 2 2 4 3 6 2 2 6 3 5 2 2 3 3 2 2 2 3 4 8 2 2 2 2 4 3 2 ...

result:

ok 1048576 numbers

Test #31:

score: 0
Accepted
time: 324ms
memory: 35972kb

input:

20 0
902882 664857 1047224 183618 88593 382161 107917 67910 527299 367280 276070 1032135 680366 72379 583921 516904 965765 513924 476186 648968 534455 800221 24161 171781 528257 795611 1385 536913 485662 465619 713814 725103 525557 690722 90305 573527 1015872 121873 542098 949802 127102 958923 53236...

output:

1 0 9 0 0 2 1 0 1 0 0 3 2 0 1 0 4 0 0 1 0 2 0 1 0 3 0 1 1 0 0 2 0 2 0 1 5 0 0 1 0 3 0 1 0 1 2 0 4 0 0 1 0 2 0 1 0 2 1 0 1 0 0 3 2 0 0 1 1 0 5 0 0 1 0 3 1 0 0 2 0 2 0 1 0 3 0 1 2 0 1 0 0 1 4 0 1 0 4 0 2 0 1 0 0 2 0 1 1 0 0 3 0 6 0 1 0 2 0 1 0 3 1 0 0 1 0 2 2 0 0 1 0 7 1 0 0 1 0 2 0 1 3 0 0 2 1 0 1 0 ...

result:

ok 1048576 numbers

Test #32:

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

input:

1 1
2 1

output:

1 0 

result:

ok 2 number(s): "1 0"

Test #33:

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

input:

1 0
1 2

output:

0 1 

result:

ok 2 number(s): "0 1"

Test #34:

score: 0
Accepted
time: 144ms
memory: 35820kb

input:

20 1048575
924274 728807 143468 851897 609988 262663 982977 610373 135163 134795 923793 569204 875986 702834 971502 187748 476516 975902 30626 644269 750325 1008247 323883 860636 159423 598401 812886 286710 132495 750781 261871 354651 706866 180913 835118 817970 433926 930245 403851 555752 127938 22...

output:

19 19 17 19 19 18 19 19 17 17 19 19 19 19 19 17 18 19 14 19 19 19 18 19 17 19 19 18 17 19 17 18 19 17 19 19 18 19 18 19 16 17 19 18 17 19 15 18 19 16 19 19 19 18 19 17 19 19 19 19 19 19 19 17 19 19 12 18 19 18 14 16 19 16 15 16 19 18 14 19 19 19 16 18 17 19 18 17 19 19 16 19 16 14 18 16 18 19 19 19 ...

result:

ok 1048576 numbers

Extra Test:

score: 0
Extra Test Passed