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 |
|
|
| 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 |