Untitled
unknown
plain_text
10 months ago
1.6 kB
5
Indexable
#include <bits/stdc++.h>
using namespace std;
#define int long long
void solve() {
int n;
cin >> n;
vector<pair<int,int>> a;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
a.push_back({x,0});
}
//average
double p = 1e-4;
double l = p;
double r = 1e9;
double ans = 0;
for(int i=0;i<100;i++){
double mid = l + (r-l)/2;
debug(mid);
vector<pair<int,int>> c;
for(int i=0;i<n;i++){
c.push_back({a[i].first - mid,0});
}
debug(c);
int sum = 0;
for(int i=0;i<c.size()-1;i++){
if(c[i].first>c[i+1].first){
if(c[i].second==0){
c[i].second = 1;
sum += c[i].first;
}
else{
continue;
}
}
else{
c[i+1].second = 1;
sum += c[i+1].first;
}
// debug(sum);
}
debug(sum);
if(sum>=0){
ans = mid;
l = mid+p;
}
else{
r = mid+p;
}
debug(ans);
}
cout << fixed << setprecision(5) << ans << endl;
//median
int count = 0;
int sum = 0;
vector<int> b;
for(int i=0;i<n-1;i++){
if(a[i].first>a[i+1].first){
if(a[i].second==0){
a[i].second = 1;
count++;
sum += a[i].first;
b.push_back(a[i].first);
}
else{
continue;
}
}
else{
a[i+1].second = 1;
count++;
sum += a[i+1].first;
b.push_back(a[i+1].first);
}
}
sort(b.begin(),b.end());
debug(b);
cout << b[((b.size()+1)/2)-1] << endl;
}
signed main() {
int t = 1;
// cin >> t;
while (t--) {
solve();
}
return 0;
}
Editor is loading...
Leave a Comment