CodeForces 279B Books

时间:2021-02-24 19:26:41

http://codeforces.com/problemset/problem/279/B

题意 :Valera 有很多的空闲时间,所以他决定看书,给出n本书,编号1到n,和看每本书需要的时间,他看书是随机的,然后是连续的,从第 i 本开始看,看完了会看第i+1本,然后是第i+2本,问他在时间 t 内最多能看多少本书。

思路 :一开始没看明白题意,以为把时间排序,从小开始往里加,后来才发现人家要求的是连续的。这个就是循环从头开始加,如果时间超了,就从第一本开始往外删。

#include <iostream>
#include <stdio.h>
#include <string.h> using namespace std ; int book[] ;
int main()
{
int n,t ;
while(scanf("%d %d",&n,&t)!=EOF)
{
for(int i = ; i < n ; i++)
scanf("%d",&book[i]) ;
int sum = , cnt = ,time = ,count = ;
for(int i = ; i < n ; i++)
{
if(time+book[i] > t)
{
time -= book[cnt] ;
cnt++ ;
i-- ;
sum--;
}
else
{
time += book[i] ;
sum++ ;
count = max(sum,count) ;
}
}
cout<<count<<endl ;
}
return ;
}