음주 코딩

면접 대비

시간 제한1초메모리 제한256 MB

요약
점 갱신과 구간 곱의 부호(+/-/0) 질의를 처리하는 문제로, 파일 끝까지 여러 테스트 케이스가 주어진다.
난이도

보통10점 중 5점

유형
세그먼트 트리, 누적 합, 수학, 구현
정답자
아직 제출이 없습니다

문제

오늘은 ACM-ICPC 대회 전날이다. 상근이는 긴장을 풀기 위해 팀원들과 근처 술집에 갔다.

상근이와 친구들은 다음 날 있을 대회를 연습할 겸 간단한 게임을 하기로 했다.

먼저 선영이가 상근이에게 정수 NN개로 이루어진 수열 X1,X2,…,XNX_1, X_2, \dots, X_N을 적어 준다. 게임은 총 KK번의 라운드로 진행되며, 매 라운드마다 선영이는 다음 두 종류 중 하나의 명령을 내린다.

  • 변경: 수열의 한 값을 다른 값으로 바꾼다.
  • 곱셈: 선영이가 ii와 jj를 말하면, 상근이는 곱 Xi×Xi+1×⋯×XjX_i \times X_{i+1} \times \dots \times X_j가 양수인지, 음수인지, 0인지를 대답한다.

곱셈 명령에서 답을 틀리면 벌칙으로 소주를 한 잔 마셔야 한다. 다행히 선영이가 노트북 사용을 허락해 주었고, 상근이는 자신의 암산 실력보다 코딩 실력을 더 믿는다.

상근이를 도와 각 곱셈 명령의 결과를 알려 주는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어지며, 파일의 끝까지 각 테스트 케이스를 차례대로 처리한다.

각 테스트 케이스의 첫째 줄에는 수열의 크기 NN과 라운드 수 KK가 주어진다. (1≤N,K≤1051 \le N, K \le 10^5)

둘째 줄에는 수열의 값 X1,X2,…,XNX_1, X_2, \dots, X_N이 공백으로 구분되어 주어진다. (−100≤Xi≤100-100 \le X_i \le 100)

이어지는 KK개의 줄에는 명령이 한 줄에 하나씩 주어진다. 각 명령은 문자 C 또는 P로 시작한다.

  • C i V: 변경 명령. XiX_i의 값을 VV로 바꾼다. (1≤i≤N1 \le i \le N, −100≤V≤100-100 \le V \le 100)
  • P i j: 곱셈 명령. Xi×⋯×XjX_i \times \dots \times X_j의 부호를 묻는다. (1≤i≤j≤N1 \le i \le j \le N)

각 테스트 케이스에는 곱셈 명령이 적어도 한 번 이상 주어진다.

출력

각 테스트 케이스마다, 그 테스트 케이스의 모든 곱셈 명령의 결과를 순서대로 이어 붙여 한 줄에 출력한다. ii번째 문자는 ii번째 곱셈 명령의 결과이며, 곱이 양수이면 +, 음수이면 -, 0이면 0을 출력한다.

힌트

발머의 피크 이론(Ballmer's Peak Theory)은 프로그래머의 혈중 알코올 농도가 0.129%와 0.138% 사이일 때 초인적인 코딩 실력을 발휘한다는 (농담 섞인) 이론이다.

예제1

  1. 예제 1

    입력
    4 6
    -2 6 0 -1
    C 1 10
    P 1 4
    C 3 7
    P 2 2
    C 4 -5
    P 1 4
    5 9
    1 5 -2 4 3
    P 1 2
    P 1 5
    C 4 -5
    P 1 5
    P 4 5
    C 3 0
    P 1 5
    C 4 -5
    C 4 -5
    
    예상 출력
    0+-
    +-+-0