๋ฌธ์
1655๋ฒ: ๊ฐ์ด๋ฐ๋ฅผ ๋งํด์
์ฒซ์งธ ์ค์๋ ๋ฐฑ์ค์ด๊ฐ ์ธ์น๋ ์ ์์ ๊ฐ์ N์ด ์ฃผ์ด์ง๋ค. N์ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 100,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๊ทธ ๋ค์ N์ค์ ๊ฑธ์ณ์ ๋ฐฑ์ค์ด๊ฐ ์ธ์น๋ ์ ์๊ฐ ์ฐจ๋ก๋๋ก ์ฃผ์ด์ง๋ค. ์ ์๋ -1
www.acmicpc.net
์ฝ๋
#include <iostream>
#include <queue>
#include <cmath>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
priority_queue<int> left;
priority_queue<int,vector<int>, greater<>> right;
int N; cin>>N;
for(int i=1; i<=N; i++){
int inp; cin>>inp;
if(i==1) left.push(inp);
else if(right.empty()){
if(left.top()<inp) right.push(inp);
else left.push(inp);
}
else{
if(inp>right.top()) right.push(inp);
else left.push(inp);
}
int diff = abs((int)right.size() - (int)left.size());
if(diff>=2){
if(right.size()>left.size()){
left.push(right.top());
right.pop();
}
else{
right.push(left.top());
left.pop();
}
}
if(i&1){ //ํ์์ผ ๋
if(right.size()>left.size()) cout<<right.top()<<'\n';
else cout<<left.top()<<'\n';
}
else{ //์ง์์ผ ๋
cout<<min(left.top(), right.top())<<'\n';
}
}
}
ํ์ด
[๋ฐฑ์ค,c++] 2696๋ฒ - ์ค์๊ฐ ๊ตฌํ๊ธฐ
๋ฌธ์ 2696๋ฒ: ์ค์๊ฐ ๊ตฌํ๊ธฐ ์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T(1 โค T โค 1,000)๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ ์ผ์ด์ค์ ์ฒซ์งธ ์ค์๋ ์์ด์ ํฌ๊ธฐ M(1 โค M โค 9999, M์ ํ์)์ด ์ฃผ์ด์ง๊ณ , ๊ทธ ๋ค์ ์ค๋ถํฐ ์ด
dkswnkk.tistory.com
์ ๋ฌธ์ ๋ ์๋นํ ์ ์ฌํ ๋ฌธ์ ์
๋๋ค.
heap์ ๋ ๊ฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ ํ์ top ๊ฐ๋ค์ด ์ค์๊ฐ์ด ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์, ๋ ํ์ ์ฐจ์ด๊ฐ 2 ์ด์์ด ๋ ๊ฒฝ์ฐ ์ฌ์ด์ฆ๊ฐ ํฐ ์ชฝ์ ๊ฐ์ ์์ ์ชฝ์ ๊ฐ์ผ๋ก ์ฎ๊ฒจ๊ฐ๋ ์์ด๋์ด๋ก ํด๊ฒฐํ๋ฉด ๊ตฌํํ ์ ์์ต๋๋ค.
'Algorithm ๐ง๐ปโ๐ป > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค,c++] 1068๋ฒ - ํธ๋ฆฌ (0) | 2022.06.21 |
---|---|
[๋ฐฑ์ค,c++] 5539๋ฒ - ์ด์ง ๊ฒ์ ํธ๋ฆฌ (0) | 2022.06.21 |
[๋ฐฑ์ค,c++] 9934๋ฒ - ์์ ์ด์ง ํธ๋ฆฌ (0) | 2022.06.21 |
[๋ฐฑ์ค,c++] 12764๋ฒ - ์ธ์ง๋ฐฉ์ ๊ฐ ์คํ (0) | 2022.06.20 |
[๋ฐฑ์ค,c++] 17255๋ฒ - N์ผ๋ก ๋ง๋ค๊ธฐ (0) | 2022.06.20 |
[๋ฐฑ์ค,c++] 19537๋ฒ - ์ธ์ด๋ฒ๊ฐ๊ฐ์ดํ (0) | 2022.06.20 |
๋๊ธ