Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*masterwayne*/
- #include<bits/stdc++.h>
- using namespace std;
- #define sc(x) scanf("%d",&x)
- #define sc2(x,y) scanf("%d %d",&x,&y)
- #define sc3(x,y,z) scanf("%d %d %d",&x,&y,&z)
- #define pf(x) printf("%d",x)
- #define pf2(x,y) printf("%d %d",x,y)
- #define pf3(x,y,z) printf("%d %d %d",x,y,z)
- #define fr(i,x,n) for(int i=x;i<n;i++)
- #define fre(i,x,n) for(int i=x;i<=n;i++)
- #define fb(i,x,n) for(int i=n-1;i>=x;i--)
- #define fbe(i,x,n) for(int i=n;i>=x;i--)
- #define pfn() printf("\n")
- #define pfs() printf(" ")
- #define pb push_back
- long long int n,m,k;
- int check(long long int val)
- {
- long long int req=val;
- val = val-1;
- int left = k-1;
- int right = n-k;
- if(val<=left)
- {
- long long rem = left-val;
- req+=((val*(val+1)/2)+rem);
- }
- else
- {
- long long temp = val-left;
- long long add = (val*(val+1)/2)-(temp*(temp+1)/2);
- req+=add;
- }
- if(val<=right)
- {
- long long rem = right-val;
- req+=((val*(val+1)/2)+rem);
- }
- else
- {
- long long temp = val-right;
- long long add = (val*(val+1)/2)-(temp*(temp+1)/2);
- req+=add;
- }
- if(req<=m)
- return 1;
- return 0;
- }
- long long int solve()
- {
- long long int l = 1;
- long long int r=m;
- long long int ans = 1;
- while(l<=r)
- {
- int mid = l + (r-l)/2;
- if(check(mid))
- {
- if(ans<mid)
- ans=mid;
- l=mid+1;
- }
- else
- r=mid-1;
- }
- return ans;
- }
- int main()
- {
- cin>>n>>m>>k;
- if(m<n)
- cout<<"0";
- else
- cout<<solve();
- return 0;
- }
Add Comment
Please, Sign In to add comment