#include <bits/stdc++.h>
using namespace std;
long long int n, m, k, maxx = 1000000000, minx = 0, ans = -1;
long long int f(long long int x) {
  long long int s1, s2;
  if (x - n + k >= 1) {
    s2 = (n - k) * (2 * x - n + k - 1) / 2;
  } else {
    s2 = x * (x - 1) / 2 + (n - k) - (x - 1);
  }
  if (x - k + 1 >= 1) {
    s1 = (k - 1) * (2 * x - k) / 2;
  } else {
    s1 = x * (x - 1) / 2 + (k - x);
  }
  return (s1 + s2 + x);
}
long long int searchx(long long int l, long long int u) {
  if (l > u) {
    long long int v1 = f(l);
    long long int v2 = f(u);
    if (v1 == m) {
      return (l);
    } else {
      return (u);
    }
  }
  long long int mid = (l + u) / 2;
  long long int v = f(mid);
  if (v == m) {
    return (mid);
  } else if (v > m) {
    return (searchx(l, mid - 1));
  } else if (v < m) {
    return (searchx(mid + 1, u));
  }
}
int main() {
  cin >> n >> m >> k;
  cout << searchx(1, m);
  return (0);
}
