Submission #464701

#TimeUsernameProblemLanguageResultExecution timeMemory
464701sobaCipele (COCI18_cipele)C++14
90 / 90
121 ms2648 KiB
#include <bits/stdc++.h> using namespace std; const int N = 10000+1; int n ,m , x; int dp[5001][5001]; vector<int>v1 , v2; int solve(int i , int rem) { if(rem==0) return 0; if(i==n) return 1e9; int &ret=dp[i][rem]; if(ret!=-1) return ret; ret=min( max(solve(i+1, rem-1), abs(v1[i]-v2[m-rem]) ) , solve(i+1 , rem) ); return ret; } int main() { cin>>n>>m; for(int i = 0 ; i < n; i++) { cin>>x; if(n>=m) v1.push_back(x); else v2.push_back(x); } for(int i=0 ; i < m ;i++ ) { cin >> x; if(n>=m) { v2.push_back(x); } else v1.push_back(x); } if(n<m)swap(n,m); int ans=0; sort(v1.begin(), v1.end()); sort(v2.begin(), v2.end()); if(n==m) { for(int i = 0; i< n ;i++) { ans=max(ans , abs(v1[i]-v2[i])); } cout << ans; return 0; } int l = 0 , r = 1e9+10 , mid; ans=1e9; while(l<=r) { mid=(l+r)>>1; int j =0; for(int i = 0 ; i < n ; i++) { if(abs(v1[i]-v2[j])<=mid) j++; if(j==m)break; } if(j==m) { ans=min(ans , mid); r=mid-1; } else l=mid+1; } cout << ans ; 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...