Submission #890826

#TimeUsernameProblemLanguageResultExecution timeMemory
890826vjudge1Bitaro's travel (JOI23_travel)C++17
15 / 100
3091 ms2356 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define int long long #define pb push_back #define ff first #define ss second #define all(v) v.begin(), v.end() #define rall(v) v.rbegin(), v.rend() #define ordered_set tree<ll, null_type, less<ll>, rb_tree_tag, tree_order_statistics_node_update> #define ordered_multiset tree<type1, null_type, less_equal<type1>, rb_tree_tag, tree_order_statistics_node_update>; using namespace std; using namespace __gnu_pbds; const int mod = 1e9+7; const double PI = acos(-1.0); const double epsilon = 1e-6; const int N = 1e5+5; void solve(){ int n; cin >> n; vector<int> a(n); for(int &i : a) cin >> i; int q; cin >> q; while(q--){ int pos; cin >> pos; auto lb = lower_bound(all(a),pos); int ans = 0; if(lb == a.begin()){ for(int i = 0; i < n-1; i++) ans += a[i+1] - a[i]; cout << ans + a[0] - pos << '\n'; continue; }else if(lb == a.end()){ for(int i = n-1; i > 0; i--) ans += a[i] - a[i-1]; cout << ans + pos - a[n-1] << '\n'; continue; } int r = lb - a.begin(),l = r - 1; while(1){ if(l < 0 && r >= n) break; if(l >= 0 && abs(pos - a[l]) <= abs(pos - a[r])){ ans += abs(pos - a[l]); pos = a[l]; l--; }else{ ans += abs(pos - a[r]); pos = a[r]; r++; } } cout << ans << '\n'; } } main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int tt = 1; //cin >> tt; while (tt--) { solve(); } }

Compilation message (stderr)

travel.cpp:58:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   58 | main(){
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...