교각 놓기(실패)
문제 링크: https://www.acmicpc.net/problem/1276
현재 실패한 상황이다.
코드 수정 후 재업로드 예정
#include<iostream>
#include<deque>
#include<algorithm>
using namespace std;
class bridge {
public:
int y;
int x1;
int x2;
bridge(int a, int b, int c) {
this->y = a;
this->x1 = b;
this->x2 = c;
}
};
bool compare(bridge* a, bridge* b) {
if (a->x1 == b->x1)
return a->x2 < b->x2;
return a->x1 < b->x1;
}
int main() {
int n;
cin >> n;
deque<bridge*> list;
for (int i = 0; i < n; i++) {
int y, x1, x2;
cin >> y >> x1 >> x2;
list.push_back(new bridge(y, x1, x2));
}
sort(list.begin(), list.end(), compare);
int count = (list[0]->y);
for (int i = 1; i < n; i++) {
if (list[i - 1]->x2 > list[i]->x1) {
//두 다리가 겹칠경우
if (list[i - 1]->y < list[i]->y) {
// 이전 다리가 더 낮을 경우
count += list[i]->y;
}
else if (list[i - 1]->y == list[i]->y) {
continue;
}
else {
// 이전 다리가 더 높을 경우
count += list[i-1]->y;
}
}
else {
// 현재 다리가 이전 다리와 겹치지 않을 경우
count += (list[i]->y);
}
}
count += list.back()->y;
for (int i = 0; i < n; i++) {
cout << list[i]->y << " " << list[i]->x1 << " " << list[i]->x2 << endl;
}
cout << count << endl;
return 0;
}
'ProblemSolving' 카테고리의 다른 글
[BOJ] 5052_전화번호 목록 (0) | 2021.02.10 |
---|---|
[BOJ] 1269_대칭 차집합 (0) | 2021.02.08 |
[BOJ] 10546_배부른 마라토너 (0) | 2021.02.06 |
[BOJ] 7785_회사에 있는 사람 (0) | 2021.02.05 |
[BOJ] 5397_키로커 (0) | 2021.02.04 |
최근댓글