Problem

1 /10


C++에서 설정

Theory Click to read/hide

C++의 세트

설정(설정) — 추가된 요소를 오름차순으로 자동 정렬하는 컨테이너입니다. 그러나 동일한 값을 추가할 때 set는 하나의 인스턴스만 저장합니다(multiset - multiset- 중복을 포함할 수 있음). 세트에 새 요소가 추가되면 정렬 순서를 위반하지 않도록 즉시 제자리에 들어갑니다.  

C++의 세트는 set(multiset) 클래스를 통해 STL 표준 템플릿 라이브러리에서 정의됩니다.

세트는 이진 레드-블랙 트리입니다. 검색, 삭제 및 삽입 작업은 대수적 복잡성을 가집니다.
 
세트를 사용하려면 “set” 라이브러리를 포함해야 합니다. #include <세트>
세트 선언:
set<int> mySet; // 빈 집합을 선언합니다. multiset mySet; // 빈 다중 집합을 선언합니다.  
세트(세트) 작업을 위한 기능
 
empty() - 컨테이너에 요소가 없는지 확인
 
size() - 컨테이너의 요소 수를 반환합니다.
 
clear() - 컨테이너를 지웁니다
 
insert() - 요소 삽입
 
erase() - 요소 제거
 
count() - 주어진 키와 일치하는 요소의 수를 반환합니다.
 
find() - 특정 키를 가진 요소 찾기
 
lower_bound() - 주어진 값보다 작지 않은 첫 번째 요소에 대한 반복자를 반환합니다.
 
upper_bound() - 지정된 값보다 큰 첫 번째 요소에 대한 반복자를 반환합니다.
 
<사업부>
 
세트 및 멀티세트 예시
#include <iostream> #include <세트> 네임스페이스 표준 사용; 정수 메인() { set<int> mySet1; // 공집합 선언 multiset mySet2; // 빈 다중 집합 선언 // 세트에 요소 추가 mySet1.삽입(1); mySet1.insert(2); mySet1.insert(3); mySet1.삽입(1); // multiset에 요소 추가 mySet2.insert(1); mySet2.insert(2); mySet2.insert(3); mySet2.insert(1); set::iterator it; //이터레이터 생성 for(it = mySet1.begin(); it != mySet1.end(); it++) { // 모든 요소 표시 cout << (*it) << " " // 설정 } cout << 끝; for(it = mySet2.begin(); it != mySet2.end(); it++) { // 모든 요소 출력 cout << (*it) << " " // 멀티셋 } 0을 반환합니다. }

Problem

입력
주어진 숫자 N (1 <= N <= 100000) – 요청 수. 다음 N 줄에는 문자 ‘+’ 또는 ‘-’ 및 숫자 a(1 <= a <= 1000000000). 기호 – ‘+’이면 숫자 a가 집합에 추가되고, 그렇지 않으면 – 이전에 추가된 모든 a 값을 제거합니다.
숫자가 제거되면 세트에 포함된다는 것이 보장됩니다.

출판물
모든 쿼리가 완료된 후 세트의 모든 고유 요소를 오름차순으로 표시하거나 세트에 요소가 없는 경우 "-1"로 표시해야 합니다.

 
<헤드> <몸>
# 입력 출력
1 <사업부>3
+1
+2
<사업부>-1
2
2 <사업부>3
+1
+1
<사업부>-1
-1
3 <사업부>3
+1
+1
+1
1