Submission #1075470

#TimeUsernameProblemLanguageResultExecution timeMemory
1075470ProtonDecay314Sprinklers (CEOI24_sprinklers)C++17
20 / 100
2037 ms1904 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<ll> vll; typedef vector<vll> vvll; typedef vector<int> vi; typedef vector<vi> vvi; typedef pair<int, int> pi; typedef vector<pi> vpi; typedef pair<ll, ll> pll; typedef vector<pll> vpll; typedef vector<bool> vb; typedef set<ll> sll; #define IOS cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(false) #define INF(dtype) numeric_limits<dtype>::max() #define NINF(dtype) numeric_limits<dtype>::min() #define fi first #define se second typedef pair<int, vb> pib; pib solve_n1(int n, int m, const vi& s, const vi& f) { vb config(n, false); // Case 1: n == 1 bool less_exists = false; bool greater_exists = false; int spos = s[0]; int ans = 0; for(int fv : f) { if(fv < spos) { less_exists = true; ans = max(ans, spos - fv); } else if(fv > spos) { greater_exists = true; ans = max(ans, fv - spos); } } config[0] = greater_exists; if(less_exists && greater_exists) return {-1, config}; return {ans, config}; } pib solve(int n, int m, const vi& s, const vi& f) { if(n == 1) { return solve_n1(n, m, s, f); } int ans_config_mask = 0; int ans = INF(int); for(int mask = 0; mask < (1 << n); mask++) { int cost = 0; for(int i = 0; i < m; i++) { int min_cost = INF(int); for(int j = 0; j < n; j++) { if((mask >> j) & 0b1) { // points to right if(f[i] >= s[j]) min_cost = min(min_cost, f[i] - s[j]); } else { // points to left if(f[i] <= s[j]) min_cost = min(min_cost, s[j] - f[i]); } } cost = max(cost, min_cost); } if(cost < ans) { ans = cost; ans_config_mask = mask; } } vb config(n, false); for(int i = 0; i < n; i++) config[i] = (ans_config_mask >> i) & 0b1; return {ans, config}; } int main() { IOS; int n, m; cin >> n >> m; vi s(n, 0); vi f(m, 0); for(int& sv : s) cin >> sv; for(int& fv : f) cin >> fv; auto [ans, config] = solve(n, m, s, f); cout << ans << "\n"; if(ans != -1) { for(const bool& b : config) cout << (b ? 'R' : 'L'); cout << "\n"; } cout << flush; 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...