Submission #886431

#TimeUsernameProblemLanguageResultExecution timeMemory
886431tsumondaiDouble Attendance (CCO22_day1problem3)C++14
0 / 25
2 ms13144 KiB
#include <bits/stdc++.h> using namespace std; #define Task "problemname" #define int long long #define fi first #define se second #define pb push_back #define mp make_pair #define foru(i, l, r) for(int i = l; i <= r; i++) #define ford(i, r, l) for(int i = r; i >= l; i--) #define __TIME (1.0 * clock() / CLOCKS_PER_SEC) typedef pair<int, int> ii; typedef pair<ii, int> iii; typedef pair<ii, ii> iiii; const int N = 1e6 + 5; const int oo = oo, mod = 1e9 + 7; int n[2], k, dist[2][600600]; pair<int, int> a[2][300300]; priority_queue<array<int, 3>, vector<array<int, 3>>, greater<array<int, 3>>> pq; int getidx(int t, int p) { return upper_bound(a[t] + 1, a[t] + n[t] + 1, pair<int, int>(p, oo)) - a[t] - 1; } int calc(int t, int l, int r) { int li = getidx(t, l), ri = getidx(t, r); return ri - li + (a[t][li].first <= l && l < a[t][li].second); } void push(int t, int c, int d) { if (dist[t][c] <= d) return; dist[t][c] = d; pq.push({d, t, c}); } void process() { cin >> n[0] >> n[1] >> k; for (int i = 0; i < 2; i++) { for (int j = 1; j <= n[i]; j++) { cin >> a[i][j].fi >> a[i][j].se; } sort(a[i] + 1, a[i] + n[i] + 1); } for (int i = 0; i < 2; i++) fill(dist[i], dist[i] + 600600, oo); if (a[0][1].first == 0) { dist[0][1] = 0; pq.push({0, 0, 1}); } else { dist[0][0] = 0; pq.push({0, 0, 0}); } int ans = 0; while (!pq.empty()) { /*auto [d, t, c]*/ auto tmp = pq.top(); pq.pop(); int d, t, c; d = tmp[0], t = tmp[1], c = tmp[2]; if (d > dist[t][c]) continue; if (d > oo / 2) continue; ans = max(ans, c); int idx = getidx(t, d); if (idx + 1 <= n[t]) { push(t, c + 1, a[t][idx + 1].first); } int e = d + k; if (a[t][idx].first <= d && d < a[t][idx].second) { e = max(d + k, a[t][idx].second - k); } push(t ^ 1, c + calc(t ^ 1, d + k, e), e); } cout << ans; } signed main() { cin.tie(0)->sync_with_stdio(false); if (fopen(Task".INP", "r")) { freopen(Task".INP", "r", stdin); freopen(Task".OUT", "w", stdout); } process(); cerr << "Time elapsed: " << __TIME << " s.\n"; return 0; } // dont stop

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:93:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   93 |   freopen(Task".INP", "r", stdin);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:94:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   94 |   freopen(Task".OUT", "w", stdout);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...