-
Milking Cows /c++ALGORITHM/USACO 2019. 8. 11. 17:57728x90
1. map으로 건들여 본다 -> 값이 중복된다
2. multimap으로 건들여 본다. -> value를 정렬해줘야 한다
3. set으로 건들여 본다 -> 값이 중복
4. multiset으로 중복도 가능하고 값도 정렬해준다.
#include <iostream> #include <set> #include <stack> using namespace std; int main() { int N; int answer1 = 0; int answer1_x = 1<<30; int answer2 = 0; int answer2_x = 0; int answer2_y = 0; bool check = false; multiset<pair<int,int>> m; stack<int> stac; cin >> N; for (int i = 0; i < N; i++) { int a,b; cin >> a>> b; m.insert(pair<int, int>(a, 1)); // 시작 m.insert(pair<int, int>(b, 2));//끝 } for (multiset<pair<int, int>> ::iterator iter = m.begin(); iter != m.end(); iter++) { cout << iter->first << " " << iter->second << endl; if (iter->second==1) { stac.push(iter->first); answer2_x = iter->first; if (answer1_x > iter->first) { answer1_x = iter->first; } if (check) { if (answer2 < iter->first - answer2_y) { answer2 = iter->first - answer2_y; } check = false; } }else { stac.pop(); answer2_y = iter->first; if (stac.empty()) { if (answer1 < iter->first - answer1_x) { answer1 = iter->first - answer1_x; } answer1_x = 1 << 30; check = true; } } } cout << answer1<<" "<<answer2<<endl; return 0; }
'ALGORITHM > USACO' 카테고리의 다른 글
Solving USACO Name That Number problem in c++ (0) 2019.08.11 Solving the usaco transform problem in c++ (0) 2019.08.11 Broken Necklace /c++ (0) 2019.08.11 Friday the Thirteenth /c++ (0) 2019.08.11 Task 'gift1': Greedy Gift Givers /c++ (0) 2019.08.11