水题日记20190417

原题:http://codeforces.com/contest/1154/problem/B

   import java.util.Arrays;
    import java.util.Comparator;
    import java.util.Scanner;
    public class sakuragi {//开boolean used[]数组以元素本身值为下标时,注意负数的情况。但是这道题其实跟负数没关系
    	//number数组开3开小了,跟自己写的指针自增结构有关
    	//以后演草用标准完整的伪代码。气死我啦!
    		public static void main(String args[]) {
    			Scanner sc=new Scanner(System.in);
    			int n;
    			int m;
    			n=sc.nextInt();
    			Integer a[]=new Integer[n];
    			Integer number[]=new Integer[4];
    			boolean exist[]=new boolean[220];
    			int count=0;//2或者3
    			for(int i=0;i<n;i++) {
    				a[i]=sc.nextInt();
    				
    				if(!exist[a[i]]) {//如果这个数是新数
    					exist[a[i]]=true;
    					number[count++]=a[i];
    					if(count>3) {
    						System.out.println("-1");
    						return;
    					}
    				}else {
    					continue;
    				}
    			}
    			int D;
    			Comparator<Integer>cmp=new Comparator<Integer>() {
    				@Override
    				public int compare(Integer o1, Integer o2) {
    					return o2-o1;
    				}
    			};
    			//System.out.println(a[0]+" "+a[1]+" "+a[2]);
    			Arrays.sort(number, 0,count, cmp);
    			//System.out.println(a[0]+" "+a[1]+" "+a[2]);
    			if(count==3) {
    				if((number[0]-number[2])%2!=0) {//如果max和min差不是偶数
    					//System.out.println("hh");
    					System.out.println("-1");
    					return;
    				}else {
    					D=(number[0]-number[2])/2;
    					if(number[1]+D==number[0]) {
    						System.out.println(D);
    					}else {
    						System.out.println("-1");
    					}
    				}
    				
    			}else if(count==2){
    				if((number[0]-number[1])%2!=0) {
    					System.out.println(number[0]-number[1]);
    				}else {
    					D=(number[0]-number[1])/2;
    					System.out.println(D);
    				}
    			}else {//count=1
    				System.out.println("0");
    			}
    			
    		}
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值