Guest User

Untitled

a guest
Jan 22nd, 2017
312
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. /*masterwayne*/
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. #define sc(x) scanf("%d",&x)
  5. #define sc2(x,y) scanf("%d %d",&x,&y)
  6. #define sc3(x,y,z) scanf("%d %d %d",&x,&y,&z)
  7. #define pf(x) printf("%d",x)
  8. #define pf2(x,y) printf("%d %d",x,y)
  9. #define pf3(x,y,z) printf("%d %d %d",x,y,z)
  10. #define fr(i,x,n) for(int i=x;i<n;i++)
  11. #define fre(i,x,n) for(int i=x;i<=n;i++)
  12. #define fb(i,x,n) for(int i=n-1;i>=x;i--)
  13. #define fbe(i,x,n) for(int i=n;i>=x;i--)
  14. #define pfn() printf("\n")
  15. #define pfs() printf(" ")
  16. #define pb push_back
  17. long long int n,m,k;
  18. int check(long long int val)
  19. {
  20. long long int req=val;
  21. val = val-1;
  22. int left = k-1;
  23. int right = n-k;
  24. if(val<=left)
  25. {
  26. long long rem = left-val;
  27. req+=((val*(val+1)/2)+rem);
  28. }
  29. else
  30. {
  31. long long temp = val-left;
  32. long long add = (val*(val+1)/2)-(temp*(temp+1)/2);
  33. req+=add;
  34. }
  35. if(val<=right)
  36. {
  37. long long rem = right-val;
  38. req+=((val*(val+1)/2)+rem);
  39. }
  40. else
  41. {
  42. long long temp = val-right;
  43. long long add = (val*(val+1)/2)-(temp*(temp+1)/2);
  44. req+=add;
  45. }
  46. if(req<=m)
  47. return 1;
  48. return 0;
  49. }
  50. long long int solve()
  51. {
  52. long long int l = 1;
  53. long long int r=m;
  54. long long int ans = 1;
  55. while(l<=r)
  56. {
  57. int mid = l + (r-l)/2;
  58. if(check(mid))
  59. {
  60. if(ans<mid)
  61. ans=mid;
  62. l=mid+1;
  63. }
  64. else
  65. r=mid-1;
  66. }
  67. return ans;
  68. }
  69. int main()
  70. {
  71. cin>>n>>m>>k;
  72. if(m<n)
  73. cout<<"0";
  74. else
  75. cout<<solve();
  76. return 0;
  77. }
Add Comment
Please, Sign In to add comment