50分求条
查看原帖
50分求条
768951
_Chronostatis_楼主2024/6/24 23:30
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 1e5 + 10;

struct Node {
  int t, id;
} a[MAXN];

int n, m, t;
vector<int> v[MAXN];

bool cmp(const Node &i, const Node &j) {
  if (i.id != j.id) {
    return i.id < j.id;
  } else {
    return i.t < j.t;
  }
}

int main() {
  cin >> n >> m >> t;
  for (int i = 1; i <= m; i++) {
    cin >> a[i].t >> a[i].id;
  }
  sort(a + 1, a + m + 1, cmp);
  int indx = 0;
  for (int i = 1; i <= m; i++) {
    if (a[i].id != a[i - 1].id) {
      indx += (a[i].id - a[i - 1].id);
    }
    v[indx].push_back(a[i].t);
  }
  int ans = 0;
  for (int i = 1; i <= n; i++) {
    if (v[i].size() == 0) {
      continue;
    }
    int tjd = 0;
    bool isyx = 0;
    for (int j = 0; j < v[i].size(); j++) {
      if (j == 0 || v[i][j] != v[i][j - 1]) {
        if (isyx) {
          if (tjd <= 3) {
            isyx = 0;
          }
        } else if (tjd > 5) {
          isyx = 1;
        }
        if (j != 0) {
          tjd = max(0, tjd - (v[i][j] - v[i][j - 1] - 1));
        }
        tjd += 2;
      } else {
        tjd += 2;
      }
    }
    if (isyx) {
      if (tjd <= 3) {
        isyx = 0;
      }
    } else if (tjd > 5) {
      isyx = 1;
    }
    if (v[i][v[i].size() - 1] != t) {
      tjd = max(0, tjd - (t - v[i][v[i].size() - 1]));
      if (isyx && tjd <= 3) {
        isyx = 0;
      }
    }
    ans += isyx;
  }
  cout << ans;
  return 0;
}

WA在4,5,6,7,8

2024/6/24 23:30
加载中...