608C - Chain Reaction - CodeForces Solution


dp *1600

Please click on ads to support us..

C++ Code:

#include <bits/stdc++.h>
using namespace std;

int main() {
  int n;

  cin >> n;

  vector<pair<int, int>> v(n);
  vector<int> dp(n);

  for (int i = 0; i < n; i++) {
    cin >> v[i].first >> v[i].second;
  }

  int ans = INT_MAX;

  sort(v.begin(), v.end());

  dp[0] = 0;
  for (int j = 1; j < n; j++) {
    int l = 0, r = j - 1;
    int pos = -1;

    while (l <= r) {
      int mid = (l + r) / 2;

      if (v[mid].first >= v[j].first - v[j].second) {
        r = mid - 1;
      } else {
        l = mid + 1;
        pos = mid;
      }
    }

    if (pos != -1) {
      dp[j] = dp[pos] + (j - pos - 1);
    } else {
      dp[j] = j;
    }
  }

  for (int i = 0; i < n; i++) {
    ans = min(ans, dp[i] + (n - i - 1));
  }

  cout << ans << '\n';
}


Comments

Submit
0 Comments
More Questions

431B - Shower Line
282C - XOR and OR
1582B - Luntik and Subsequences
609A - Флеш-карты
1207A - There Are Two Types Of Burgers
371C - Hamburgers
343B - Alternating Current
758B - Blown Garland
1681B - Card Trick
1592A - Gamer Hemose
493D - Vasya and Chess
1485A - Add and Divide
337B - Routine Problem
1392D - Omkar and Bed Wars
76E - Points
762C - Two strings
802M - April Fools' Problem (easy)
577B - Modulo Sum
1555B - Two Tables
1686A - Everything Everywhere All But One
1469B - Red and Blue
1257B - Magic Stick
18C - Stripe
1203B - Equal Rectangles
1536A - Omkar and Bad Story
1509A - Average Height
1506C - Double-ended Strings
340A - The Wall
377A - Maze
500A - New Year Transportation