Submission #98949

#TimeUsernameProblemLanguageResultExecution timeMemory
98949SecretAgent007Cipele (COCI18_cipele)C++17
63 / 90
320 ms197336 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define INF 1e18 vector<int> a; vector<int> b; int memo[5009][5009]; int dp(int l, int r){ if(l == -1 || r == -1){ if(l == -1) return 0; else return INF/2; } if(memo[l][r] != -1) return memo[l][r]; return memo[l][r] = min(dp(l,r-1),max(dp(l-1,r-1),abs(a[l]-b[r]))); } signed main(){ ios::sync_with_stdio(false); cin.tie(0); int n, m; cin >> n >> m; a.resize(n); b.resize(m); for(int i = 0; i < n; i++){ cin >> a[i]; } for(int i = 0; i < m; i++){ cin >> b[i]; } sort(a.begin(), a.end()); sort(b.begin(), b.end()); if(n <= 5000 && m <= 5000){ for(int i = 0; i < 5009; i++){ for(int j = 0; j < 5009; j++){ memo[i][j] = -1; } } vector<int> t(a); if(n > m){ swap(a,b); } cout << dp(min(n,m)-1, max(n,m)-1) << endl; } else{ int maxi = -INF; for(int i = 0; i < m; i++){ maxi = max(maxi, abs(a[i]-b[i])); } cout << maxi << endl; } // } }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...