Submission #53877710


Source Code Expand

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
  int N;
  cin >> N;

  vector<pair<int, int>> intervals(N);
  for (int i = 0; i < N; ++i)
  {
    cin >> intervals[i].first >> intervals[i].second;
  }

  // 区間の始点と終点を記録
  vector<pair<int, int>> events;
  for (const auto &interval : intervals)
  {
    events.emplace_back(interval.first, 1);   // 始点を +1 として記録
    events.emplace_back(interval.second, -1); // 終点を -1 として記録
  }

  // 始点と終点をソート
  sort(events.begin(), events.end(), [](const pair<int, int> &a, const pair<int, int> &b)
       {
        if (a.first != b.first) return a.first < b.first;
        return a.second > b.second; });
  long long intersectCount = 0;
  long long activeIntervals = 0;

  // イベントを順に処理
  for (const auto &event : events)
  {
    if (event.second == 1)
    {
      // 始点の場合、現在のアクティブな区間の数だけ新しい共通部分ができる
      intersectCount += activeIntervals;
      activeIntervals++;
    }
    else
    {
      // 終点の場合、アクティブな区間の数を減らす
      activeIntervals--;
    }
  }

  cout << intersectCount << endl;
  return 0;
}

Submission Info

Submission Time
Task D - Intersecting Intervals
User ryoh1004
Language C++ 23 (gcc 12.2)
Score 400
Code Size 1275 Byte
Status AC
Exec Time 332 ms
Memory 15592 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 3
AC × 22
Set Name Test Cases
Sample 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt
All 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 02_handmade_01.txt, 02_handmade_02.txt, 02_handmade_03.txt, 02_handmade_04.txt
Case Name Status Exec Time Memory
00_sample_01.txt AC 1 ms 3600 KiB
00_sample_02.txt AC 1 ms 3536 KiB
00_sample_03.txt AC 1 ms 3600 KiB
01_random_01.txt AC 327 ms 15588 KiB
01_random_02.txt AC 168 ms 9508 KiB
01_random_03.txt AC 326 ms 15500 KiB
01_random_04.txt AC 217 ms 14152 KiB
01_random_05.txt AC 328 ms 15372 KiB
01_random_06.txt AC 311 ms 15312 KiB
01_random_07.txt AC 332 ms 15592 KiB
01_random_08.txt AC 207 ms 13936 KiB
01_random_09.txt AC 327 ms 15400 KiB
01_random_10.txt AC 313 ms 15188 KiB
01_random_11.txt AC 327 ms 15444 KiB
01_random_12.txt AC 24 ms 4444 KiB
01_random_13.txt AC 327 ms 15448 KiB
01_random_14.txt AC 213 ms 14072 KiB
01_random_15.txt AC 325 ms 15420 KiB
02_handmade_01.txt AC 193 ms 15432 KiB
02_handmade_02.txt AC 260 ms 15456 KiB
02_handmade_03.txt AC 190 ms 15444 KiB
02_handmade_04.txt AC 197 ms 15456 KiB