提出 #76663437


ソースコード 拡げる

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

typedef long long ll;

constexpr int mx_n = 2 * 100005;
constexpr int mx_t = 1000006;
int n, d;
int s[mx_n], t[mx_n];
vector<int> enter_at[mx_t], leave_at[mx_t];

void solve() {
#ifdef GEN_TEST
  n = 5;
  d = 2;
  for(int i = 0; i < n; ++i) {
    s[i] = rand() % 10 + 1;
    t[i] = rand() % (11 - s[i] + 1) + s[i];
  }
  cout << n << " " << d << endl;
  for(int i = 0; i < n; ++i) {
    cout << s[i] << " " << t[i] << endl;
  }
#else
  cin >> n >> d;
  for(int i = 0; i < n; ++i) {
    cin >> s[i] >> t[i];
  }
#endif

  for(int i = 0; i < n; ++i) {
    enter_at[s[i]].push_back(i);
    leave_at[t[i]].push_back(i);
  }
  ll ans = 0;
  multiset<int> valid; // has s[i] for s[i] <= t-d;
  multiset<int> future; // has s[i] for s[i] > t-d;

  for(int t = 0; t < mx_t; ++t) {
    for(int i: enter_at[t]) {
      future.insert(s[i]);
    }
    while(future.size() > 0 && *future.begin() <= t-d) {
      valid.insert(*future.begin());
      future.erase(future.begin());
    }
    int tot = valid.size();
    ans += 1ll * tot * (tot-1) / 2;
    for(int i: leave_at[t]) {
      if(s[i] <= t-d) {
        valid.erase(valid.find(s[i]));
      } else {
        future.erase(future.find(s[i]));
      }
    }

  }

  cout << ans << endl;

}

void brute() {
  ll ans = 0;
  for(int i = 0; i < n; ++i) {
    for(int j = i+1; j < n; ++j) {
      int from = max(s[i], s[j]);
      int to = min(t[i], t[j]);
      if(from <= to) {
        ans += max(0, (to-from)-d+1);
      }
    }
  }

  cout << "BRUTE: " << ans << endl;
}

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);

  int t = 1;
  // cin >> t;
  while(t--) {
    solve();
    #ifndef ONLINE_JUDGE
      brute();
    #endif
  }

  return 0;
}

提出情報

提出日時
問題 D - Accomplice
ユーザ Balajiganapathi
言語 C++23 (Clang 21.1.0)
得点 400
コード長 1843 Byte
結果 AC
実行時間 266 ms
メモリ 67296 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 400 / 400
結果
AC × 3
AC × 23
セット名 テストケース
Sample sample-01.txt, sample-02.txt, sample-03.txt
All 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, sample-01.txt, sample-02.txt, sample-03.txt
ケース名 結果 実行時間 メモリ
04.txt AC 26 ms 49804 KiB
05.txt AC 21 ms 50016 KiB
06.txt AC 171 ms 62260 KiB
07.txt AC 170 ms 62364 KiB
08.txt AC 148 ms 62376 KiB
09.txt AC 144 ms 62284 KiB
10.txt AC 115 ms 62276 KiB
11.txt AC 21 ms 49756 KiB
12.txt AC 21 ms 50144 KiB
13.txt AC 23 ms 50400 KiB
14.txt AC 95 ms 56072 KiB
15.txt AC 187 ms 61928 KiB
16.txt AC 254 ms 67200 KiB
17.txt AC 266 ms 67176 KiB
18.txt AC 257 ms 67296 KiB
19.txt AC 248 ms 67192 KiB
20.txt AC 191 ms 62944 KiB
21.txt AC 193 ms 62824 KiB
22.txt AC 193 ms 62808 KiB
23.txt AC 231 ms 65248 KiB
sample-01.txt AC 20 ms 49812 KiB
sample-02.txt AC 20 ms 49872 KiB
sample-03.txt AC 20 ms 49928 KiB