Submission #1304554

#TimeUsernameProblemLanguageResultExecution timeMemory
1304554witek_cppMarathon Race 2 (JOI24_ho_t3)C++20
0 / 100
1 ms332 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define st first #define nd second #define pb push_back #define all(a) a.begin(), a.end() #define sz(a) int(a.size()) #define f(i, a, b) for (int i = a; i < b; i++) #define rep(i, a) f(i, 0, a) #define int ll #define tv(a, x) for (auto& a : x) #define DUZO 1000000000000000000LL using pii = pair<int, int>; using vi = vector<int>; using vvi = vector<vi>; void solve() { int n, l; cin >> n >> l; vi a(n); rep(i, n) cin >> a[i]; sort(all(a)); vi odl_r(l + 1, 0); vi odl_l(l + 1, 0); int j = 0; int il = 0; tv(x,a) if (x == 0) {il++; j++;} vi pref_r(l + 1, 0); vi pref_l(l + 1, 0); pref_l[0] = il; f(i,1, l + 1) { odl_l[i] = odl_l[i - 1] + il; while (j < n && a[j] == i) { il++; j++; } pref_l[i] = il; } il = 0; j = n - 1; tv(x, a) if (x == l) {il++; j--;} pref_r[l] = il; for (int i = l - 1; i >= 0; i--) { odl_r[i] = odl_r[i + 1] + il; while (j >= 0 && a[j] == i) { il++; j--; } pref_r[i] = il; } int q; cin >> q; rep(_, q) { int s, g, t; cin >> s >> g >> t; if (s <= g) { //po prostu rozwazamy przypadki int l = min(s, a[0]); int r = max(g, a.back()); int d1 = r - l + (s - l) + (r - g); int ans = (d1 * n) - odl_l[s] - odl_r[s] - (2 * (s - l)) * pref_r[s] + d1; int d2 = 3 * (g - s) + 2 * (s - l) + 2 * (r - g); ans = min(ans, (d2 * n) - odl_r[s] - odl_l[s] - (2 * (r - s)) * pref_l[s] + d2); ans += n; if (ans <= t) { cout << "Yes\n"; } else { cout << "No\n"; } } else { int l = min(g, a[0]); int r = max(s, a.back()); int d1 = r - l + (r - s) + (g - l); int ans = (d1 * n) - odl_l[s] - odl_r[s] - (2 * (r - s)) * pref_l[s] + d1; int d2 = 3 * (s - g) + 2 * (r - s) + 2 * (g - l); ans = min(ans, (d2 * n) - odl_r[s] - odl_l[s] - (2 * (s - l)) * pref_r[s] + d2); ans += n; if (ans <= t) { cout << "Yes\n"; } else { cout << "No\n"; } } } } int32_t main() { ios::sync_with_stdio(0); cin.tie(0); int q = 1; //cin >> q; while (q--) { solve(); } return 0; }
#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...