比赛 EYOI与SBOI开学欢乐赛1st 评测结果 WWWWWWWWWW
题目名称 设备分解炉 最终得分 0
用户昵称 Skloud 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2022-08-29 21:53:26
显示代码纯文本
#include<iostream>
#include<algorithm>
#include<cmath>
#include<fstream>
using namespace std;
ifstream fin("device.in");
ofstream fout("device.out");
int n,L,l,r;
double p[105],f[10005],mid;
int tot;
int ans;
bool inf(int x)
{
    for(int i=1;i<=tot;i++)
        if(f[i]==x) return 1;
    return 0;
}
double findl(double x)
{
    int t=int(x);
    for(int i=n;i>=1;i--)
    {
        if(p[i]<=t) return i; 
    }
    return -1;
}
double findr(double x)
{
    int t=int(x+1);
    for(int i=1;i<=n;i++)
    {
        if(p[i]>=t) return i; 
    }
    return -1;
}
int main()
{
    fin>>n>>L;
    for(int i=1;i<=n;i++)
    {
        fin>>p[i];
    }
    sort(p+1,p+1+n);
    for(int i=1;i<=n;i++)
    {
        for(int j=i+1;j<=n;j++)
        {
            mid=(p[i]+p[j])/2.0;
            l=findl(mid),r=findr(mid);
            while(l-1>=1&&r+1<=n)
            {
                l--,r++;
                if((p[l]+p[j])/2.0!=mid) goto Label;
            }
            if(!inf(mid)) 
            {
                ans++,f[++tot]=mid;   
            }
        }
        Label:;
    }
    fout<<ans<<endl;
    return 0;
}