Submission #1250037

#TimeUsernameProblemLanguageResultExecution timeMemory
1250037domiSprinklers (CEOI24_sprinklers)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #define int long long #define fi first #define se second #define sz(a) (int)((a).size()) #define all(a) (a).begin(), (a).end() #define lsb(x) (x & (-x)) #define vi vector<int> #define YES { cout << "YES" << endl; return; } #define NO { cout << "NO" << endl; return; } using ll = long long; using pii = std::pair<int, int>; const int NMAX = 1e5; using namespace std; int f[NMAX + 5], s[NMAX + 5], dp[NMAX + 5], n, m; int lower_(int x) { auto it = std::upper_bound(f + 1, f + m + 1, x); if (it == f + 1) return -1; return int(it - f - 1); } int greater_(int x) { auto it = std::lower_bound(f + 1, f + m + 1, x); if (it == f + m + 1) return -1; return int(it - f); } pair<int, string> check(int k, bool print = false) { string res, prv; if (print) { res.assign(n, 'L'); prv.assign(n, 'L'); } fill(dp + 1, dp + n + 2, 0); for (int i = 1; i <= n; ++i) { dp[i] = dp[i - 1]; ///stanga int l = greater_(s[i] - k), r = lower_(s[i]); if (l != -1 && l <= r && dp[i - 1] >= l - 1 && dp[i] < r) { dp[i] = r; if (print) { res[i - 1] = 'L'; prv[i - 1] = 'L'; } } ///dreapta l = greater_(s[i]), r = lower_(s[i] + k); if (l != -1 && l <= r && dp[i - 1] >= l - 1 && dp[i] < r) { dp[i] = r; if (print) { res[i - 1] = 'R'; prv[i - 1] = 'R'; } } ///dreapta stanga if (i == 1 || s[i] - s[i - 1] > k)continue; l = greater_(s[i] - k), r = lower_(s[i - 1] + k); if (l != -1 && l <= r && dp[i - 2] >= l - 1 && dp[i] < r) { dp[i] = r; if (print) { res[i - 2] = 'R'; res[i - 1] = 'L'; prv[i - 2] = 'R'; prv[i - 1] = 'L'; if (i >= 3) res[i - 3] = prv[i - 3]; } } } return {dp[n] == m, res}; } signed main() { cin.tie(nullptr)->sync_with_stdio(false); cin >> n >> m; for (int i = 1; i <= n; ++i) cin >> s[i]; for (int i = 1; i <= m; ++i) cin >> f[i]; int lo = 0, hi = 1e9, ans = 0; while (lo <= hi) { auto mid = (lo + hi) >> 1; if (check(mid).fi) { ans = mid; hi = mid - 1; } else lo = mid + 1; } if (ans == 0) cout << "-1\n", exit(0); cout << ans << '\n' << check(ans, true).se << '\n'; return 0; }

Compilation message (stderr)

Main.cpp: In function 'long long int lower_(long long int)':
Main.cpp:3:13: error: expected primary-expression before 'long'
    3 | #define int long long
      |             ^~~~
Main.cpp:27:12: note: in expansion of macro 'int'
   27 |     return int(it - f - 1);
      |            ^~~
Main.cpp:27:11: error: expected ';' before 'long'
   27 |     return int(it - f - 1);
      |           ^
      |           ;
Main.cpp:3:13: error: expected primary-expression before 'long'
    3 | #define int long long
      |             ^~~~
Main.cpp:27:12: note: in expansion of macro 'int'
   27 |     return int(it - f - 1);
      |            ^~~
Main.cpp: In function 'long long int greater_(long long int)':
Main.cpp:3:13: error: expected primary-expression before 'long'
    3 | #define int long long
      |             ^~~~
Main.cpp:33:12: note: in expansion of macro 'int'
   33 |     return int(it - f);
      |            ^~~
Main.cpp:33:11: error: expected ';' before 'long'
   33 |     return int(it - f);
      |           ^
      |           ;
Main.cpp:3:13: error: expected primary-expression before 'long'
    3 | #define int long long
      |             ^~~~
Main.cpp:33:12: note: in expansion of macro 'int'
   33 |     return int(it - f);
      |            ^~~