Submission #1140771

#TimeUsernameProblemLanguageResultExecution timeMemory
1140771Muhammad_AneeqSprinklers (CEOI24_sprinklers)C++20
100 / 100
79 ms5984 KiB
/* بسم الله الرحمن الرحيم Author: (:Muhammad Aneeq:) */ #include <iostream> #include <vector> #include <set> #include <algorithm> #warning check the output using namespace std; #define int long long int const N=1e5+10; int s[N],f[N],dp[N]; int n,m; inline void solve() { cin >> n >> m; for (int i = 1;i <= n;i++) cin >> s[i]; for (int i = 1;i <= m;i++) cin >> f[i]; long long l = 0, r = 1e9, ans = -1; vector<pair<int, char>> fr(n + 1), bfr(n + 1); while(l <= r) { long long mid = (l + r) / 2; for (int i = 0;i <= n;i++) dp[i] = 0, bfr[i] = { 0,'?' }; for (int i = 0;i < n;i++) { if (dp[i] > dp[i + 1]) { dp[i + 1] = dp[i]; bfr[i + 1] = { i,'L' }; } int lx = s[i + 1] - mid, rx = s[i + 1]; if (f[dp[i] + 1] >= lx && f[dp[i] + 1] <= rx) { int x = upper_bound(f + 1 + dp[i], f + 1 + m, rx) - f - 1; if (dp[i + 1] < x) { dp[i + 1] = x; bfr[i + 1] = { i,'L' }; } } lx = s[i + 1], rx = s[i + 1] + mid; if (f[dp[i] + 1] >= lx && f[dp[i] + 1] <= rx) { int x = upper_bound(f + 1 + dp[i], f + 1 + m, rx) - f - 1; if (dp[i + 1] < x) { dp[i + 1] = x; bfr[i + 1] = { i,'R' }; } } if (i + 2 <= n) { int llx = s[i + 2] - mid, rrx = s[i + 2]; if (llx < lx && (f[dp[i] + 1] >= lx && f[dp[i] + 1] <= rx) || (f[dp[i] + 1] >= llx && f[dp[i] + 1] <= rrx)) { int x = upper_bound(f + 1 + dp[i], f + 1 + m, rx) - f - 1; if (dp[i + 2] < x) { dp[i + 2] = x; bfr[i + 2] = { i,'?' }; } } } } if (dp[n] == m) { r = mid - 1; ans = mid; swap(fr, bfr); } else l = mid + 1; } cout << ans << '\n'; if (ans == -1) return; int x = n; vector<char> answ(n + 1); while (x > 0) { if (fr[x].second == '?') { answ[x] = 'L', answ[x - 1] = 'R'; x -= 2; } else { answ[x] = fr[x].second; x--; } } for (int i = 1;i <= n;i++) cout << answ[i]; cout<<endl; } signed main() { ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); int t=1; for (int i=1;i<=t;i++) { solve(); } }

Compilation message (stderr)

Main.cpp:11:2: warning: #warning check the output [-Wcpp]
   11 | #warning check the output
      |  ^~~~~~~
#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...