update
This commit is contained in:
parent
2f6eb0bc61
commit
93c7ee4776
48
src/20241019/secret/secret_after.cpp
Normal file
48
src/20241019/secret/secret_after.cpp
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <iomanip>
|
||||||
|
#include <ios>
|
||||||
|
#include <iostream>
|
||||||
|
#include <limits>
|
||||||
|
#include <set>
|
||||||
|
typedef long long ll;
|
||||||
|
|
||||||
|
const ll max_n = 1e5+5;
|
||||||
|
ll n, q, input,now;
|
||||||
|
char c;
|
||||||
|
std::set<ll> pos;
|
||||||
|
|
||||||
|
#define NV(v)#v<<" : "<<(v)
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
freopen("secret.in", "r", stdin);
|
||||||
|
freopen("secret.out", "w", stdout);
|
||||||
|
|
||||||
|
std::cin>>n>>q;
|
||||||
|
for(ll _{0};_<n;_++){
|
||||||
|
std::cin>>input;
|
||||||
|
pos.insert(input);
|
||||||
|
}
|
||||||
|
for(ll _{0};_<q;_++){
|
||||||
|
std::cin>>c>>now;
|
||||||
|
|
||||||
|
if(c=='+'){
|
||||||
|
pos.insert(now);
|
||||||
|
}else if(c=='-'){
|
||||||
|
pos.erase(now);
|
||||||
|
}else{
|
||||||
|
double ans = std::numeric_limits<decltype(ans)>::max();
|
||||||
|
const auto it_right {pos.upper_bound(now)};
|
||||||
|
if ( it_right != pos.end()){
|
||||||
|
ans = std::min(ans, (double)std::max(*pos.rbegin()-now, *it_right - *pos.begin()) / (double)2.0 );
|
||||||
|
}
|
||||||
|
auto it_left {pos.find(now)};
|
||||||
|
if(it_left!=pos.begin()){
|
||||||
|
--it_left;
|
||||||
|
ans = std::min(ans, (double)std::max(*pos.rbegin() - *it_left, now - *pos.begin()) / (double)2.0 );
|
||||||
|
}
|
||||||
|
std::cout<<std::fixed<<std::setprecision(2)<<ans<<'\n';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
52
src/20241019/secret/secret_web.cpp
Normal file
52
src/20241019/secret/secret_web.cpp
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
#include <bits/stdc++.h>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
using ll = long long;
|
||||||
|
|
||||||
|
set<ll>s;
|
||||||
|
set<ll>::iterator it;
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
freopen("secret.in","r",stdin);
|
||||||
|
freopen("secret.out","w",stdout);
|
||||||
|
ll n,q,x,i;
|
||||||
|
double ans;
|
||||||
|
char pd;
|
||||||
|
cin>>n>>q;
|
||||||
|
for(i=1;i<=n;i++)
|
||||||
|
{
|
||||||
|
cin>>x;
|
||||||
|
s.insert(x);
|
||||||
|
}
|
||||||
|
for(i=1;i<=q;i++)
|
||||||
|
{
|
||||||
|
cin>>pd>>x;
|
||||||
|
if(pd=='+')
|
||||||
|
{
|
||||||
|
s.insert(x);
|
||||||
|
}
|
||||||
|
if(pd=='-')
|
||||||
|
{
|
||||||
|
s.erase(x);
|
||||||
|
}
|
||||||
|
if(pd=='?')
|
||||||
|
{
|
||||||
|
ans=0x7f7f7f7f;
|
||||||
|
it=s.upper_bound(x);
|
||||||
|
if(it!=s.end())
|
||||||
|
{
|
||||||
|
ans=min(ans,max(*it-*s.begin(),*(--s.end())-x)/2.0);
|
||||||
|
}
|
||||||
|
it=s.find(x);
|
||||||
|
if(it!=s.begin())
|
||||||
|
{
|
||||||
|
it=prev(it);
|
||||||
|
ans=min(ans,max(x-*s.begin(),*(--s.end())-*it)/2.0);
|
||||||
|
}
|
||||||
|
printf("%.2lf\n",ans);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose(stdin);
|
||||||
|
fclose(stdout);
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user