fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define pll pair<ll,ll>
  4. #define foru(i,a,b) for(ll i=(a);i<=(b);i++)
  5. #define ford(i,a,b) for(ll i=(a);i>=(b);i--)
  6. #define ALL(a) a.begin(),a.end()
  7. #define ROUND(x) fixed<<setprecision(x)
  8. #define fi first
  9. #define se second
  10. using namespace std;
  11. const int N=1e6+5;
  12. int n,m;
  13. int a[N*2];
  14. signed main()
  15. {
  16. ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  17. if(fopen("venue.inp","r")){
  18. freopen("venue.inp","r",stdin);
  19. freopen("venue.out","w",stdout);
  20. }
  21. cin>>n>>m;
  22. for(int i=1;i<=n;i++){
  23. cin>>a[i];
  24. }
  25. sort(a+1,a+1+n);
  26. for(int i=n+1;i<=n*2;i++)a[i]=a[i-n]+m;
  27. a[n*2+1]=a[1]+m*2;
  28. int ma=1e18,vt=0;
  29. for(int i=1;i<=n;i++){
  30. int mid1=(a[i+n]+a[i+n-1])/2;
  31. int mid2=(mid1+(m+1)/2);
  32. while(mid2>a[i+n-1])mid2-=m;
  33. int vt1=(lower_bound(a+i,a+i+n,mid1-(m+1)/2)-a);
  34. int vt2=vt1-1;
  35.  
  36. int x1=max(min(abs(a[vt1]-mid1),m-abs(a[vt1]-mid1)),min(abs(a[vt2]-mid1),m-abs(a[vt2]-mid1)));
  37. int x2=max(min(abs(a[i]-mid2),m-abs(a[i]-mid2)),min(abs(a[i+n-1]-mid2),m-abs(a[i+n-1]-mid2)));
  38.  
  39. if(ma>x1){
  40. ma=x1;
  41. vt=mid1;
  42. }
  43. if(ma>x2){
  44. ma=x2;
  45. vt=mid2;
  46. }
  47. }
  48. cout<<ma<<' '<<(vt%m==0?m:vt%m);
  49. return 0;
  50. }
Success #stdin #stdout 0s 5300KB
stdin
Standard input is empty
stdout
2147483647 0