https://www.acmicpc.net/problem/2631
2631번: 줄세우기
KOI 어린이집에는 N명의 아이들이 있다. 오늘은 소풍을 가는 날이다. 선생님은 1번부터 N번까지 번호가 적혀있는 번호표를 아이들의 가슴에 붙여주었다. 선생님은 아이들을 효과적으로 보호하기
www.acmicpc.net
생각해보기
- 아이들이 가장 안움직여도 되는 경우를 따지자.
- 결국 번호 순서를 오름차순으로 정렬시키는게 핵심이다.
- lis(가장 긴 증가 수열)을 이용하자.
코드
#include<iostream>
using namespace std;
int N,K;
int arr[200001];
int chk[100001];
void input(){
cin>>N>>K;
for(int i=0;i<N;++i){
cin>>arr[i];
}
}
void solution(){
int ans = 0;
int l=0, r=0;
while(r<N){
++chk[arr[r]];
while(chk[arr[r]] > K){
--chk[arr[l++]];
}
ans = max(ans, r-l+1);
++r;
}
cout<<ans<<'\n';
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
input();
solution();
return 0;
}

728x90
'알고리즘 > 백준 문제' 카테고리의 다른 글
| 1911 - 흙길 보수하기 (0) | 2023.07.18 |
|---|---|
| 2098 - 외판원 순회 (0) | 2023.07.18 |
| 20922 - 겹치는 건 싫어 (0) | 2023.07.17 |
| 14940 - 쉬운 최단거리 (0) | 2023.07.17 |
| 17609 - 회문 (0) | 2023.07.16 |
댓글