Submission #802235

# Submission time Handle Problem Language Result Execution time Memory
802235 2023-08-02T11:12:01 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 = 1e5 + 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(L, R, tmp);
	if (tmp < L || R < tmp) return false;
	for (int i = 1; i < n; i++){
		if (L <= a[l] && a[r] <= R) return true;
		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;
}

int main(){
	cin >> n;
	for (int i = 1; i <= n; i++){
		cin >> a[i];
	}
	ld sum = 0;
	for (int i = 1; i <= n; i++){
		sum += a[i];
	}
	sum /= n;
	ld l = 0, r = 1e9;
	for (int i = 1; i <= 100; i++){
		ld mid = (l + r) / 2;
	//	debug(l, r, mid);
		if (check(sum-mid, sum) || check(sum, sum+mid)) r = mid;
		else l = mid;
	}
	cout << setprecision(12) << r << '\n';
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -