• CF 382C


    http://codeforces.com/problemset/problem/382/C

    读完题立刻知道怎么做,然后分类讨论到吐血,写挂了,巨蠢

    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <cstring>
    using namespace std ;
    int n ;
    int a[100005] ;
    int temp1,temp2 ;
    int cnt1,cnt2,p1,p2 ;
    int gao()
    {
        int f=1 ;
        cnt1=cnt2=0 ;
        temp1=a[0]-a[1] ;
        for(int i=1 ;i<n-1 ;i++)
            if(a[i]-a[i+1]!=temp1)
            {
                f=0 ;
                cnt1++ ;
                p1=i ;
                
            }
        temp2=a[n-1]-a[n-2] ;
        for(int i=n-2 ;i>=1 ;i--)
            if(a[i]-a[i-1]!=temp2)
            {
                f=0 ;
                cnt2++ ;
                p2=i ;
            }
        if(f)
            return 1 ;
        return 0 ;
    }
    int main()
    {
        scanf("%d",&n) ;
        for(int i=0 ;i<n ;i++)
            scanf("%d",&a[i]) ;
        if(n==1)
        {
            puts("-1") ;
            goto end ;
        }
        sort(a,a+n) ;
        if(gao() && n>2)
        {
            int d=a[1]-a[0] ;
            if(d)
            {
                printf("2
    ") ;
                printf("%d %d
    ",a[0]-d,a[n-1]+d) ;
            }
            else
            {
                printf("1
    ") ;
                printf("%d
    ",a[0]) ;
            }
        }
        else if(n==2)
        {
            if(a[0]==a[1])
            {
                printf("1
    ") ;
                printf("%d
    ",a[0]) ;
            }
            else
            {
                int d=a[1]-a[0] ;
                if(d%2==0)
                {
                    printf("3
    ") ;
                    printf("%d %d %d
    ",a[0]-d,(a[0]+a[1])/2,a[1]+d) ;
                }
                else
                {
                    printf("2
    ") ;
                    printf("%d %d
    ",a[0]-d,a[1]+d) ;
                }
            }
        }
        else if(!gao() && min(cnt1,cnt2)==1)
        {
            if(((cnt1==1 && -temp1>temp2) || (cnt2==1 && -temp1<temp2)) && max(cnt1,cnt2)>=2)
            {
                printf("0
    ") ;
                goto end ;
            }
            if(cnt1==1 && (-temp1<temp2))
            {
                if(a[p1]-(a[p1]+a[p1+1])/2==temp1 && (a[p1]+a[p1+1])%2==0)
                {
                    puts("1") ;
                    printf("%d
    ",(a[p1]+a[p1+1])/2) ;
                }
                else
                    puts("0") ;
            }
            else
            {
                if(a[p2]-(a[p2]+a[p2-1])/2==temp2 && (a[p2]+a[p2-1])%2==0)
                {
                    puts("1") ;
                    printf("%d
    ",(a[p2]+a[p2-1])/2) ;
                }
                else
                    puts("0") ;
            }
        }
        else
            puts("0") ;
        end :
        return 0 ;
    }
    View Code
  • 相关阅读:
    centos7系统最小系统安装并配置网络
    解决 JAAVA springboot 数据存储到数据库数据显示??的方案
    vue scoped
    Vue插件
    Git命令学习
    深度拷贝
    ES6学习_简化对象写法
    ES6学习_字符串的拼接
    ES6学习_变量的解构赋值
    ES6学习_const关键字
  • 原文地址:https://www.cnblogs.com/xiaohongmao/p/3524763.html
Copyright © 2020-2023  润新知