Codeforce Round#350(Div. 2) 670B Game of Robots

问题描述

B. Game of Robots

In late autumn evening n robots gathered in the cheerful company of friends. Each robot has a unique identifier — an integer from 1 to 109.

At some moment, robots decided to play the game "Snowball". Below there are the rules of this game. First, all robots stand in a row. Then the first robot says his identifier. After that the second robot says the identifier of the first robot and then says his own identifier. Then the third robot says the identifier of the first robot, then says the identifier of the second robot and after that says his own. This process continues from left to right until the n-th robot says his identifier.

Your task is to determine the k-th identifier to be pronounced.

Input

The first line contains two positive integers n and k (1 ≤ n ≤ 100 000, 1 ≤ k ≤ min(2·109, n·(n + 1) / 2).

The second line contains the sequence id1, id2, ..., idn (1 ≤ idi ≤ 109) — identifiers of roborts. It is guaranteed that all identifiers are different.

Output

Print the k-th pronounced identifier (assume that the numeration starts from 1).

Examples

Input
2 2
1 2

Output
1

Input

4 5
10 4 18 3

Output
4

Note

In the first sample identifiers of robots will be pronounced in the following order: 1, 1, 2. As k = 2, the answer equals to 1.
In the second test case identifiers of robots will be pronounced in the following order: 10, 10, 4, 10, 4, 18, 10, 4, 18, 3. A k = 5, the answer equals to 4.

Code

由于是比赛结束前1min想出来的办法。。。然后在比赛结束后10S改完。。。。也不知道能否AC,白天等开放submit再验证吧
可Accept

#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
    int id[100010]={0};
    int n,k;
    while (~scanf("%d %d",&n,&k))
    {
        for(int i=1;i<=n;i++)
        {
            cin>>id[i];
        }
        for(int i=1;i<=k;i++)
        {
            if(k>i)
              k-=i;
        }
        cout<<id[k]<<endl;
    }
}
 

下面的是一开始的超时代码。。

#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
    int id[100010]={0};
    int sum[100010]={0};
    int n,k;
    while (~scanf("%d %d",&n,&k))
    {
        for(int i=1;i<=n;i++)
        {
            cin>>id[i];
        }
        int d=1;
        for(int i=1;i<=j;i++)
        {
            for(int t=1;t<=i;t++)
            {
                sum[d++]=id[t];
            }
        }
        cout<<sum[k]<<endl;
    }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容