s2021ss54听歌

该程序接收歌曲数量n和时间k,通过前缀和计算每首歌的结束时间,从而确定在给定时间k时正在播放的歌曲编号。

听歌(song)

【问题描述】

小珊很喜欢音乐。一天,她把喜欢的n首歌加入了播放清单,每首歌长度为ai (1≤i≤n) 秒,小珊想知道第k秒时正在播放第几首歌?

【输入】

第一行2个整数 n,k;表示歌曲数量和提问的时间k;

第二行为n个整数,表示每首歌的长度。

【输出】

一个整数,表示题目中所提时间正在播放第几首歌。

【输入输出样例 1】

song.in

song.out

3 40

50 30 20

1

【输入输出样例 2】

song.in

song.out

3 80

50 30 20

2

【数据范围】

1≤n,ai≤10000;k不超所有歌曲总时间;

代码:

#include<bits/stdc++.h>
using namespace std;
int n,k,a[10000009],s[10000009],ans;
int main()
{
    cin>>n>>k;
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=1;i<=n;i++)s[i]=s[i-1]+a[i];
    for(int i=1;i<=n;i++)
    {
    	if(k<=s[i])
    	{
    		ans=i;
    		break;
    	}
    }
	cout<<ans;
    return 0;
}

用前缀和算出每首歌在几分钟后播放,再按时间段找出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值