CF 508C

点击打开链接



import java.util.Arrays;
import java.util.Scanner;

public class Main {
	   public  static  void  main(String [] args){
		       new Solve().run() ;
	   } 
}

class  Solve{
	   int   bit[] = new int[608] ;
	   
	   int   lowbit(int x){
		     return x & (-x) ;
	   }
	   
	   int   sum(int i){
		     int s = 0 ; 
		     for(int j = i ; j > 0 ; j -= lowbit(j)) s += bit[j] ;
		     return s ;
	   }
	   
	   void  insert(int i , int d){
		     for(int j = i ; j < 608 ; j += lowbit(j))  bit[j] += d ;
	   }
	   
	   int   []c = new int[308] ;
	
	   void  run(){
		     Scanner cin = new Scanner(System.in) ;
		     Arrays.fill(bit, 0) ;   
		     int  n = cin.nextInt() ;
		     int  t = cin.nextInt() ;
		     int  r = cin.nextInt() ;
		     for(int i = 0 ; i < n ; i++){
		    	   c[i] = 300 + cin.nextInt() ;
		     }
		     if(t < r){
		    	      System.out.println("-1") ;
		    	      return ;
		     }
		     
		     int  g , need = 0  , ans = 0 ;
		     for(int i = 0 ; i < n ; i++){
		    	   g = sum(c[i]) ;
		    	   if(g < r){
		    		   need = r - g ;
		    		   ans += need  ;
			    	   for(int j = c[i] - need ; j < c[i] ; j++){
			    		     insert(j, 1);
			    		     insert(j + t + 1 , -1) ;
			    	   }
		    	   }
		     }
		     System.out.println(ans) ;
	   }
	   
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值