제출 #1189856

#제출 시각아이디문제언어결과실행 시간메모리
1189856UnforgettableplMeasures (CEOI22_measures)C++20
24 / 100
1595 ms3548 KiB
#include <bits/stdc++.h> using namespace std; #define int long long int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int N,M,D; cin >> N >> M >> D;D*=2; vector<int> arr(N); for(int&i:arr){cin>>i;i*=2;} auto solve = [&](int x){ arr.emplace_back(2*x); if(arr.size()==1)return 0ll; sort(arr.begin(),arr.end()); auto poss = [&](int amt){ vector<int> C(arr.size()); for(int i=1;i<arr.size();i++)C[i]=arr[i]-arr[i-1]; C[1]+=amt; C.back()+=amt; bool works = true; for(int i=1;i<arr.size();i++){ if(i!=1){ int L = min(amt,max(C[i-1]-D,0ll)); C[i]+=L; C[i-1]-=L; } if(i!=arr.size()-1 and C[i]<D){ int L = min(amt,D-C[i]); C[i]+=L; C[i+1]-=L; } if(C[i]<D)works=false; } return works; }; int ans = -1; for(int jump=(1ll<<50);jump;jump/=2){ if(!poss(ans+jump))ans+=jump; } return ++ans; }; for(int i=1;i<=M;i++){ int x;cin>>x; long long ans = solve(x); if(ans&1)cout<<ans/2<<".5"<<' '; else cout<<ans/2<<' '; } cout << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...