记录编号 597363 评测结果 AAAAAAAAAA
题目名称 小b爱实数 最终得分 100
用户昵称 Gravatar黄天宇 是否通过 通过
代码语言 C++ 运行时间 0.688 s
提交时间 2024-11-26 21:26:20 内存使用 19.77 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e6+5;
string str;
int n;
double f;
double a[MAXN],s[MAXN];
double minx=1e9;
int p;
struct edge{
	int x;
	double y;
}sum[MAXN];
bool cmp(edge a,edge b){
	return a.y<b.y;
}
int main(){
	freopen("changgao_real.in","r",stdin);
	freopen("changgao_real.out","w",stdout);
	cin>>f;
	cin>>str;
	for(int i=0;i<str.length();i++){
		if(str[i]=='1') a[i+1]=1;
	}
	for(int i=1;i<=str.length();i++){
		s[i]=s[i-1]+a[i];
	}
	for(int i=1;i<=str.length();i++){
		sum[i].y=s[i]-f*(double)i;
		sum[i].x=i;
	}
	p=1e9;
	sort(sum+1,sum+str.length()+1,cmp);
	for(int i=2;i<=str.length();i++){
		double d=fabs((sum[i].y-sum[i-1].y)/(sum[i].x-sum[i-1].x));
		if(min(sum[i-1].x,sum[i].x)<p){
			if(d-1e-6<minx){
				minx=d;
				p=min(sum[i-1].x,sum[i].x);
			}
		}else{
			if(d+1e-6<minx){
				minx=d;
				p=min(sum[i-1].x,sum[i].x);
			}
		}
	}
	cout<<p<<endl;
	return 0;
}