문제
정올이는 정보올림피아드를 준비하는 동아리의 운영자이다.
동아리 회원들의 학습에 도움이 되고자 학습사이트를 준비하고 있다.
회원가입과 로그인등 회원 관리를 위하여 회원들이 ID를 입력한 경우
이를 확인하는 프로그램을 만드는 중이다.
ID는 알파벳 소문자(a ~ z)와 숫자(0 ~ 9)를 포함하며 길이는 5 ~ 12자이다.
정올이는 다음과 같은 함수를 만들 생각이다.
하지만 여러 가지로 너무 바빠 여러분에게 구현을 부탁하고 있다.
정올이를 도와 프로그램을 완성해보자.
* 명령 1 : int validate(char* ID)
: ID가 이미 가입되어 있다면 1을, 그렇지 않다면 0을 반환한다.
* 명령 2 : int activate(char* ID)
: ID가 로그인 중이라면 1을, 그렇지 않다면 0을 반환한다.
* 명령 3 : int signup(char*ID)
: 새로운 ID이라면 등록하고 현재 등록 중인 회원 수를 반환한다.
등록만 되고 자동으로 로그인되지 않는다는 것에 유의하자.
이미 등록된 ID라면 현재 등록 중인 회원 수만 반환한다.
* 명령 4 : int close(char*ID)
: ID가 등록된 회원이라면 탈퇴 처리한다.
등록된 회원이 로그인 되어 있다면 탈퇴와 동시에 로그아웃도 처리되어야 한다.
등록된 회원이 아니라면 아무 일도 하지 않는다.
현재 등록 중인 회원 수를 반환한다.
* 명령 5 : int login(char*ID)
: ID가 등록된 회원이고 로그아웃된 상태라면 로그인 처리한다.
그렇지 않다면 아무 일도 하지 않는다.
현재 로그인 중인 회원 수를 반환한다.
* 명령 6 : int logout(char*ID)
: ID가 로그인 된 회원이라면 로그아웃 처리한다.
그렇지 않다면 아무 일도 하지 않는다.
현재 로그인 중인 회원 수를 반환한다.
입력
첫 행에 명령 수 N이 입력된다. ( 100 ≤ N ≤ 500,000)
다음 행부터 N행에 걸쳐 cmd ID 형식의 데이터가 입력된다.
(1 ≤ cmd ≤ 6) ( ID : 알파벳 소문자(a ~ z)와 숫자(0 ~ 9)를 포함하며 길이는 5 ~ 12)
출력
예제
10
1 ronaldo
2 ronaldo
3 ronaldo
3 novak
3 geeks
1 novak
5 novak
5 geeks
6 novak
4 ronaldo
0
0
1
2
3
1
1
2
1
2