zoukankan      html  css  js  c++  java
  • Codeforces Round #552 (Div. 3) B题

    题目链接:http://codeforces.com/contest/1154/problem/B

    题目大意:给出n个数,每个数都可以加上或减去这个一个数D,求对这n个数操作之后当所有数都相等时,D的最小值。

    题解:先考虑一些情况,这n个数如果只有一种,也就是,全部都相等,D显然是0,那如果是两种数,a 和 b,a<b,如果想让D最小

    且D是整数,那么当b - a为偶数,D是 (b-a)/2-a,反之是b-a,当是三种数a,b,c,a<b<c时,显然必须b-a=c-b,否则输出-1,其他情况也是-1

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int a[1000],b[1000];
     4 int main()
     5 {
     6     int n,flag=0,tot=0;
     7     cin>>n;
     8     for(int i=1;i<=n;i++) cin>>a[i];
     9     sort(a+1,a+1+n);
    10     for(int i=1;i<=n-1;i++)
    11     {
    12         if(a[i]!=a[i+1])
    13         {
    14             flag++;
    15         } 
    16     }
    17     if(flag==0) printf("0\n");
    18     else if(flag==1) {
    19         for(int i=1;i<=n-1;i++)
    20         {
    21             if(a[i]!=a[i+1])
    22             {
    23                 if((a[i]+a[i+1])%2==0) cout<<(a[i]+a[i+1])/2-a[i]<<endl;
    24                 else cout<<a[i+1]-a[i]<<endl;
    25             }
    26         }
    27     }
    28     else if(flag==2) {
    29         for(int i=1;i<=n-1;i++)
    30         {
    31             if(a[i]!=a[i+1])
    32             {
    33                 b[++tot]=a[i+1]-a[i];
    34             }
    35         }
    36         if(b[1]==b[2]) cout<<b[1]<<endl;
    37         else {
    38             cout<<-1<<endl;return 0;
    39         }
    40     }
    41     else {
    42         cout<<-1<<endl;return 0;
    43     }
    44 } 
    View Code
  • 相关阅读:
    CTF -攻防世界-crypto新手区(5~11)
    CTF密码学常见加密解密总结
    CTF -攻防世界-crypto新手区(1~4)
    跨域问题解决
    npm使用记录
    dva控制元素动态消失隐藏
    maven安装记录
    postgreSQL记录
    关于System.__ComObject一些问题
    论文中表格跨页处理
  • 原文地址:https://www.cnblogs.com/duxing201806/p/10726401.html
Copyright © 2011-2022 走看看