C市现在要转移一批罪犯到D市,C市有n名罪犯,按照入狱时间有顺序,另外每个罪犯有一个罪行值,值越大罪越重。现在为了方便管理,市长决定转移入狱时间连续的c名犯人,同时要求转移犯人的罪行值之和不超过t,问有多少种选择的方式?
输入描述:
第一行数据三个整数:n,t,c(1≤n≤2e5,0≤t≤1e9,1≤c≤n),第二行按入狱时间给出每个犯人的罪行值ai(0≤ai≤1e9)
输出描述:
一行输出答案。
输入例子:
3 100 21 2 3
输出例子:
2
// Java版本 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); while(input.hasNext()){ int n=input.nextInt(); long t=input.nextInt(); int c=input.nextInt(); long a[]=new long[n]; int count=0; long amount=0; for(int i=0; i<n; i++){ a[i]=input.nextLong(); } for( int i=0; i<c; i++){ amount+=a[i]; } if(amount<=t)++count; for( int i=1; i<=n-c; i++){ amount=amount-a[i-1]+a[i+c-1]; if(amount<=t)++count; } System.out.println(count); } input.close(); } }
时间: 2024-10-11 23:12:07