답안 #802120

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
802120 2023-08-02T10:05:46 Z NothingXD Seesaw (JOI22_seesaw) C++17
0 / 100
1 ms 212 KB
#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef double ld;
void debug_out(){cerr<<endl;}
template<typename Head, typename... Tail>
void debug_out(Head H, Tail... T){
	cerr << H << ' ';
	debug_out(T...);
}

#define debug(...) cerr << "(" << #__VA_ARGS__ << "): ", debug_out(__VA_ARGS__)
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define MP(x, y) make_pair(x, y)

const int maxn = 2e3 + 10;

int n, a[maxn];
vector<ld> L;

bool check(ld L, ld R){
	//debug(L, R);
	ld sum = 0;
	for (int i = 1; i <= n; i++){
		sum += a[i];
	}
	int l = 1, r = n;
	ld tmp = sum / n;
	//debug(tmp);
	if (tmp < L || R < tmp) return false;
	for (int i = 1; i < n; i++){
		ld tmp1 = (sum - a[l]) / (n-i);
		ld tmp2 = (sum - a[r]) / (n-i);
	//	debug(l, r, tmp1, tmp2);
		if (L <= tmp1 && tmp1 <= R){
			sum -= a[l];
			l++;
		}
		else if (L <= tmp2 && tmp2 <= R){
			sum -= a[r];
			r--;
		}
		else return false;
	}
	return true;
}

bool check(ld x){
	for (auto y: L){
		if (check(y, y+x)) return true;
	}
	return false;
}

int main(){
	cin >> n;
	for (int i = 1; i <= n; i++){
		cin >> a[i];
	}
	for (int i = 1; i <= n; i++){
		ld tmp = 0;
		for (int j = i; j <= n; j++){
			tmp += a[j];
			tmp /= (j-i+1);
			L.push_back(tmp);
		}
	}
	ld l = 0, r = 1e9;
	for (int i = 1; i <= 100; i++){
		ld mid = (l + r) / 2;
	//	debug(l, r, mid);
		if (check(mid)) r = mid;
		else l = mid;
	}
	cout << setprecision(12) << r << '\n';
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 1 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 1 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 1 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 1 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -