https://www.acmicpc.net/problem/13334
[난이도] Gold2
[유형] 스위핑
[풀이]
길이 d의 선을 평행이동 시키면서 어느시점에 i가 포함되고 빠지는지를 누적하면서 계산해주면 된다.
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
int N,d,ans;
vector<pair<int,int>> t,a;
int main(){
scanf("%d",&N);
int j=0;
for(int i=0;i<N;i++){
int u,v;
scanf("%d%d",&u,&v);
if(u>v) swap(u,v);
t.push_back({u,v});
}
scanf("%d",&d);
for(auto p : t){
if(p.second-p.first>d) continue;
a.push_back({p.first,1});
a.push_back({p.second-d,-1});
}
sort(a.begin(),a.end());
int cnt=0;
for(auto p : a){
cnt-=p.second;
ans=max(ans,cnt);
}
printf("%d",ans);
}
https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Gold2/13334.cpp
'Problem-Solving > BOJ' 카테고리의 다른 글
[BOJ/백준][Gold2] 2637 : 장난감조립 (C++) (0) | 2021.03.15 |
---|---|
[BOJ/백준][Gold2] 15653 : 구슬 탈출 4 (C++) (0) | 2021.03.15 |
[BOJ/백준][Gold2] 2515 : 전시장 (C++) (0) | 2021.03.15 |
[BOJ/백준][Gold2] 14867 : 물통 (C++) (0) | 2021.03.15 |
[BOJ/백준][Gold2] 16946 : 벽 부수고 이동하기4 (C++) (0) | 2021.03.15 |