百度笔试题求答案-----罪犯转移,不能通过 求大神指点

C市现在要转移一批罪犯到D市,C市有n名罪犯,按照入狱时间有顺序,另外每个罪犯有一个罪行值,值越大罪越重。现在为了方便管理,市长决定转移入狱时间连续的c名犯人,同时要求转移犯人的罪行值之和不超过t,问有多少种选择的方式?  
输入描述:
第一行数据三个整数:n,t,c(1≤n≤2e5,0≤t≤1e9,1≤c≤n),第二行按入狱时间给出每个犯人的罪行值ai(0≤ai≤1e9)


输出描述:
一行输出答案。

输入例子:
3 100 2
1 2 3

输出例子:
2


#include <iostream> #include <stdio.h> using namespace std; int main() { long n = 0; long t = 0; long c = 0; long a[200000]; scanf("%ld%ld%ld",&n,&t,&c); for(long i = 0;i<n;i++) { scanf("%ld",&a[i]); } long count = 0; bool flag = false; long sum = 0; for(long i = 0;i<=n-c;i++) { if(!flag) { for(long j = i;j<c+i;j++) { sum +=a[j]; } flag = true; }else { sum = sum+a[c+i-1]-a[i-1]; } if(sum <= t) count++; } printf("%ld",count); return 0; }

全部评论
题目中:1≤n≤2e5 你代码中:long a[100000]; 还有,你的题目都不贴全,让路过的怎么看呢,至少得把输入描述输出描述,还有输入输出示例贴完整吧?
点赞 回复 分享
发布于 2015-09-22 16:47

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务