LIS NlogN 연습의 전형적 형태
입력이 간단해서 쉬웠다.
https://www.acmicpc.net/problem/2352
2352번: 반도체 설계
첫째 줄에 정수 n(1 ≤ n ≤ 40,000)이 주어진다. 다음 줄에는 차례로 1번 포트와 연결되어야 하는 포트 번호, 2번 포트와 연결되어야 하는 포트 번호, …, n번 포트와 연결되어야 하는 포트 번호가 주
www.acmicpc.net
풀이방법은 정말 lis 구현밖에 없다....
#include <bits/stdc++.h>
#define INF 123456789
using namespace std;
vector<int> v;
vector<int> in;
int main(){
int n,tmp;
scanf("%d", &n);
for(int i=0; i<n; i++){
scanf("%d", &tmp);
in.push_back(tmp);
}
v.push_back(-INF);
for(int i=0; i<n; i++){
if(v[v.size()-1] < in[i]){ v.push_back(in[i]); }
else {
auto it = lower_bound(v.begin(), v.end(), in[i]);
*it = in[i];
}
}
printf("%d", v.size()-1);
return 0;
}
반응형