제출 #779283

#제출 시각아이디문제언어결과실행 시간메모리
779283vjudge1Cipele (COCI18_cipele)C++17
18 / 90
39 ms10448 KiB
//#include<bits/stdc++.h> #include<iostream> #include<bitset> #include<algorithm> using namespace std; #define lalala ios_base::sync_with_stdio(false);cin.tie(NULL); #define endl "\n" #define pb push_back #define N 100005 bitset<N> var; int main(){ lalala; int n,m;cin>>n>>m; int sa[n],sol[m]; for(int i=0;i<n;i++)cin>>sa[i]; for(int i=0;i<m;i++)cin>>sol[i]; sort(sa,sa+n); sort(sol,sol+m); if(n==m){ int mx=0; for(int i=0;i<n;i++)mx=max(mx,abs(sa[i]-sol[i])); cout<<mx<<endl; return 0; } if(n<m){ int mx=0; vector<int> kimler[N],best; for(int i=0;i<n;i++){ int l=0,r=m-1; while(l<r){ int mid=(l+r)/2; if(sol[mid]>=sa[i]){ r=mid; } else l=mid+1; } int a=l,b=l; if(l!=0)a--; //cout<<a<<" "<<b<<endl; if(abs(sol[b]-sa[i])<abs(sol[a]-sa[i])){ best.pb(b); kimler[b].pb(i); } else { best.pb(a); kimler[a].pb(i); } } for(auto u:best){ if(kimler[u].size()==1&&var[u]==0){ mx=max(mx,abs(sa[kimler[u][0]]-sol[u])); var[u]=1; continue; } int a=kimler[u][0], b=kimler[u][1]; int mx1=0,mx2=0; if(u!=0){ mx1=max(abs(sa[a]-sol[u-1]),abs(sa[b]-sol[u])); } if(u!=m-1){ mx2=max(abs(sa[a]-sol[u]),abs(sa[b]-sol[u+1])) ; } var[u]=1; if(mx1>mx2&&mx2!=0){ var[u+1]=1; } else var[u-1]=1; mx=max(mx,max(mx1,mx2)); } cout<<mx<<endl; } else{ int mx=0; vector<int> kimler[N],best; for(int i=0;i<m;i++){ int l=0,r=n-1; while(l<r){ int mid=(l+r)/2; if(sa[mid]>=sol[i]){ r=mid; } else l=mid+1; } int a=l,b=l; if(l!=0)a--; //cout<<a<<" "<<b<<endl; if(abs(sa[b]-sol[i])<abs(sa[a]-sol[i])){ best.pb(b); kimler[b].pb(i); } else { best.pb(a); kimler[a].pb(i); } } for(auto u:best){ if(kimler[u].size()==1&&var[u]==0){ mx=max(mx,abs(sol[kimler[u][0]]-sa[u])); var[u]=1; continue; } int a=kimler[u][0], b=kimler[u][1]; int mx1=0,mx2=0; if(u!=0){ mx1=max(abs(sol[a]-sa[u-1]),abs(sol[b]-sa[u])); } if(u!=n-1){ mx2=max(abs(sol[a]-sa[u]),abs(sol[b]-sa[u+1])); } var[u]=1; if(mx1>mx2&&mx2!=0){ var[u+1]=1; } else var[u-1]=1; mx=max(mx,max(mx1,mx2)); } cout<<mx<<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...