#include <bits/stdc++.h>
using namespace std;
const int MX = 2e5 + 22;
int N, M, k;
const double PI = acos(-1), eps = 1e-7;
double ToDegree(double teta) { return (teta * 180.0) / PI; }
bool Zero(double n) { return fabs(n) <= eps; }
bool Isnan(double val) { return isnan(val); }
struct point {
  double x, y, th;
  point() {
    this->x = 0;
    this->y = 0;
  }
  point(double x, double y) {
    this->x = x;
    this->y = y;
  }
  point operator+(const point &p) const { return point(x + p.x, y + p.y); }
  point operator-(const point &p) const { return point(x - p.x, y - p.y); }
  point operator*(double second) const { return point(x * second, y * second); }
  point operator/(double second) const { return point(x / second, y / second); }
  bool operator<(const point &p) const { return th < p.th; }
};
double Dot(point p1, point p2) { return p1.x * p2.x + p1.y * p2.y; }
double Cross(point p1, point p2) { return p1.x * p2.y - p1.y * p2.x; }
double VectorNorm(point v) { return sqrt(v.x * v.x + v.y * v.y); }
double VectorAngle(point v) {
  double th = atan2(v.y, v.x);
  if (th < 0) th += 2.0 * PI;
  return th;
}
double AngleBetweenVectors(point a, point b) {
  return VectorAngle(b) - VectorAngle(a);
}
long double Dist(point p1, point p2) { return VectorNorm(p2 - p1); }
long double AreaofTriangle(point a, point b, point c) {
  long double cur = Cross((b - a), (c - a));
  return abs(cur / 2.0);
}
long double AreaOfPolygon(vector<point> &p) {
  long double area = 0;
  for (int i = 2; i < p.size(); i++) {
    area += Cross((p[i - 1] - p[0]), (p[i] - p[0]));
  }
  return abs(area / 2.0);
}
bool Collinear(point a, point b, point c) {
  return Zero(AreaofTriangle(a, b, c));
}
bool LinesParallel(point a, point b, point c, point d) {
  return Zero(Cross(b - a, d - c));
}
bool LinesCollinear(point a, point b, point c, point d) {
  return Collinear(a, b, c) && Collinear(a, b, c);
}
bool SegmentsIntersect(point a, point b, point c, point d) {
  if (LinesCollinear(a, b, c, d)) {
    if (Zero(Dist(a, c)) || Zero(Dist(a, d)) || Zero(Dist(b, c)) ||
        Zero(Dist(b, d)))
      return true;
    if (Dot(c - a, c - b) > 0 && Dot(d - a, d - b) > 0 && Dot(c - b, d - b) > 0)
      return false;
    return true;
  }
  if (Cross(d - a, b - a) * Cross(c - a, b - a) > 0) return false;
  if (Cross(a - c, d - c) * Cross(b - c, d - c) > 0) return false;
  return true;
}
point RotateCCW90(point p) { return point(-p.y, p.x); }
point RotateCW90(point p) { return point(p.y, -p.x); }
point RotateCCW(point p, double t) {
  return point(p.x * cos(t) - p.y * sin(t), p.x * sin(t) + p.y * cos(t));
}
vector<point> v;
void solve() {
  int pt[3];
  for (int i = 0; i < 3; i++) cin >> pt[i];
  sort(pt, pt + 3);
  int ans = 0;
  if (pt[0] + pt[1] <= pt[2]) {
    ans = pt[2] - pt[0] - pt[1] + 1;
  }
  cout << ans << '\n';
}
int main() {
  int T = 1;
  while (T--) solve();
  return 0;
}
