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
while True: try: n,t,c=list(map(int,input().split())) a=list(map(int,input().split())) except: break prisoner=a[:c]#选定罪犯,初始为a[0]~a[c-1] sums=sum(prisoner)#罪行值之和 if sums>t: count=0 else:#不超过t则计数+1 count=1 for i in range(c,n):#从a[c]开始,轮流加进去新的犯人a[i],并把最开始的犯人a[i-c]去除 prisoner.append(a[i]) prisoner.pop(0) sums=sums+a[i]-a[i-c]#更新罪行值之和 if sums<=t: count+=1 print(count)
while True: try: n, t, c = raw_input().split() n = long(n) t = long(t) c = long(c) if n < 1 or n > 2e5: break elif t < 0 or t > 1e9: break elif c < 1 or c > n: break else: pass aa = raw_input().split() a = [long(x) for x in aa] sumx = 0 num = 0 for i in range(c): sumx += a[i] i = c if sumx <= t: num += 1 while i < n: start = i - c stop = i sumx -= (a[start] - a[stop]) if sumx <= t: num += 1 i += 1 print num except EOFError, e: break
sys.stdout.write(str(res))
pyton 代码如上, 错误如下,请问在哪里出错啦