제출 #1314721

#제출 시각아이디문제언어결과실행 시간메모리
1314721laykSafety (NOI18_safety)C++20
100 / 100
114 ms24924 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #include <immintrin.h> #ifndef DEBUG //#pragma GCC optimize("O3") //#pragma GCC target("avx2") #endif using namespace __gnu_pbds; using namespace __gnu_cxx; using namespace std; // using ld = long double; using ll = long long; using i128 = __int128; using ull = unsigned long long; using pll = std::pair<ll, ll>; using cmpl = std::complex<ld>; template<typename T> using oset = tree<T, null_type, std::less<T>, rb_tree_tag, tree_order_statistics_node_update>; constexpr ll MOD1 = 998244353; constexpr ll MOD = 1000000007; constexpr ll INV2 = 499122177; constexpr ld PI = 3.141592653589793; const ld eps = 1e-7; const ll K = 500; const ll C = 200; std::mt19937 rnd(std::chrono::steady_clock::now().time_since_epoch().count()); ld START_TIME = clock(); void solve() { ll n, k; std::cin >> n >> k; std::vector<ll> a(n); for (int i = 0; i < n; ++i) { std::cin >> a[i]; } ll sht = k; std::map<ll, ll> lft, rgt; lft[a[0]] = 1; rgt[a[0]] = 1; ll ans = 0; for (ll i = 1; i < n; ++i) { ll l = lft.rbegin()->first - sht; ll r = rgt.begin()->first + sht; if (l <= a[i] && a[i] <= r) { ++lft[a[i] + sht]; ++rgt[a[i] - sht]; } else if (a[i] < l) { lft[a[i] + sht] += 2; --lft[l + sht]; if (lft[l + sht] == 0) { lft.erase(l + sht); } ans += l - a[i]; ++rgt[l - sht]; } else { rgt[a[i] - sht] += 2; --rgt[r - sht]; if (rgt[r - sht] == 0) { rgt.erase(r - sht); } ans += a[i] - r; ++lft[r + sht]; } sht += k; } std::cout << ans; } signed main() { #ifdef DEBUG std::freopen("/home/anton/CLionProjects/untitled/input.txt", "r", stdin); #else // std::freopen("tri.in", "r", stdin); std::freopen("tri.out", "w", stdout); #endif std::cin.tie(nullptr)->std::ios_base::sync_with_stdio(false); int tt = 1; // ll g; std::cin >> g; // std::cin >> tt; while (tt--) { solve(); } #ifdef DEBUG std::cerr << '\n'; ld TIME = (clock() - START_TIME) / CLOCKS_PER_SEC; std::cerr << "Time: " << TIME << '\n'; #endif }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...