시간제한이 1초인 문제를 풀고있는데요.. 알고리즘이
벡터x에 30만개의 원소를 넣는다. push_back()사용.
stl sort로 x를 오름차순정렬.
x.erase(unique(x.begin(),x.end()),x.end()) 을 사용하여 중복되는 원소 제거
for( i = 0~ 56만) 또다른벡터 y[i]=0; 초기화 처리.
for( i = 0~10만)
{
이진탐색으로 원소의 갯수가 30만개인 x벡터안에있는 특정원소의 위치를 찾는다.
이진트리에서 제일 낮은 레벨중 이 위치번째의 노드를 1의 가중치를 변경하고..
인덱스트리의 삽입 알고리즘 시행.
}
for( i = 0~10만)
{
이진탐색으로 원소의 갯수가 30만개의 x벡터안에있는 특정원소의 위치를 찾는다.
이진탐색으로 원소의 갯수가 30만개의 x벡터안에있는 특정원소의 위치를 찾는다. (오타아님 두번해주는것)
y벡터로는 인덱스트리가 만들어져 있으므로 위에서 구한 두 위치의 구간사이에 1이 있는지 찾는다. [ lg n 의 시간복잡도 ]
}
요로코롬 되는데 1초가 한참 넘어가더라구요..;
for문이 1억번정도 돌면 1초가 걸린다고 알고있는데.. ㅠㅠㅠㅠ
1억번 한참 안도는것같은데.. 제컴에서도 느리고 문제 채점사이트의 서버에서도 타임리밋이 초과했다고 뜨네용..