This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
typedef long double fl;
typedef vector <int> vi;
typedef pair <ll,ll> pll;
typedef pair <int,int> pii;
typedef pair <int,pii> piii;
#define forr(_a,_b,_c) for(int _a = (_b); _a <= int (_c); ++_a)
#define fofr(_a,_b,_c) for(int _a = (_b) + 1; _a --> int (_c);)
#define forf(_a,_b,_c) for(int _a = (_b); _a < int (_c); ++_a)
#define st first
#define nd second
#define pb push_back
#define mp make_pair
#define all(x) begin(x),end(x)
#define mask(i) (1LL << (i))
#define bit(x, i) (((x) >> (i)) & 1)
#define bp __builtin_popcountll
#define file "test"
template<class X, class Y>
bool minz(X &x, const Y &y) {
if (x > y) {
x = y;
return true;
} return false;
}
template<class X, class Y>
bool maxz(X &x, const Y &y) {
if (x < y) {
x = y;
return true;
} return false;
}
const int N = 5e5 + 5;
const ll oo = (ll) 1e16;
const ll mod = 1e9 + 7; // 998244353;
ll n, u, q, s;
vector <ll> x;
int main(){
ios_base::sync_with_stdio(0); cin.tie(0);
#ifdef kaguya
freopen(file".inp", "r", stdin); freopen(file".out", "w", stdout);
#endif
cin >> n;
forr (i, 1, n){
cin >> u;
x.pb(u);
}
cin >> q;
while(q--) {
cin >> s;
ll i = lower_bound(all(x), s) - x.begin(), ans=0;
if(!i){
cout << x.back() - s << "\n";
continue;
}
if (i == n){
cout << s - x[0] << "\n";
continue;
}
ll fr = x[i] - s, fl = s - x[i - 1], l, r;
if (fl <= fr){
ans += fl;
l = r = i - 1;
s = x[i - 1];
} else {
ans += fr;
l = r = i;
s = x[i];
}
while (1){
if (!l){
ans += x[n - 1] - s;
break;
}
if (r == n - 1){
ans += s - x[0];
break;
}
if (s - x[l - 1] <= x[r + 1] - s){
ll i = lower_bound(all(x), 2 * s - x[r + 1]) - x.begin();
ans += s - x[i];
s = x[i];
l = i;
} else {
ll i = lower_bound(all(x), 2 * s - x[l - 1]) - x.begin() - 1;
ans += x[i] - s;
s = x[i];
r = i;
}
}
cout << ans << "\n";
}
return 0;
}
/*
*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |