만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

인플레이션

면접 대비

시간 제한3초메모리 제한1024 MB

요약
N개 요리의 가격이 주어지고, 매일 모든 가격에 x를 더하거나 가격이 x인 요리의 가격을 y로 바꾼 뒤 가격 합을 구합니다.
난이도

보통10점 중 5점

유형
해시맵, 구현
정답자
아직 제출이 없습니다

문제

스웨덴 남부 사람들은 팔라펠을 많이 먹는 것으로 알려져 있다. 팔라펠 가격은 자주 변하고, 경제 상황을 분석하는 가장 좋은 방법은 매일 같은 팔라펠 가게에 가서 메뉴에 있는 모든 가격을 더해 보는 것이다.

팔라펠 가게 메뉴에는 서로 다른 요리가 NN개 있다. ii번째 요리의 가격은 pip_i이다.

매일 다음 사건 중 하나가 일어난다.

  • INFLATION x: 정수 xx를 모든 가격에 더한다.
  • SET x y: 가격이 xx인 모든 요리의 가격을 yy로 바꾼다.

QQ일 동안의 사건을 처리하고, 매일 처리가 끝난 뒤 모든 가격 pip_i의 합을 출력한다.

입력

첫째 줄에 요리의 개수를 나타내는 정수 NN이 주어진다.

둘째 줄에 NN개의 정수 p1,p2,…,pNp_1, p_2, \ldots, p_N이 주어진다.

셋째 줄에 날짜 수를 나타내는 정수 QQ가 주어진다.

이후 QQ개의 줄에는 문자열 ss와 그 뒤에 정수 한 개 또는 두 개가 주어진다.

ss가 INFLATION이면 정수 xx가 하나 이어서 주어진다. 이는 그날 모든 가격에 xx를 더한다는 뜻이다.

ss가 SET이면 정수 xx와 yy가 이어서 주어진다. 이는 그날 가격이 xx인 모든 요리의 가격을 yy로 설정한다는 뜻이다.

출력

QQ개의 줄을 출력한다. kk번째 줄에는 kk일이 끝난 뒤 모든 가격 pip_i의 합을 출력한다.

제한

  • 1≤N≤3⋅1051 \leq N \leq 3 \cdot 10^5.
  • 1≤pi≤1061 \leq p_i \leq 10^6 (1≤i≤N1 \leq i \leq N인 각 ii에 대해).
  • 1≤Q≤1051 \leq Q \leq 10^5.
  • 모든 날에 대해 1≤x,y≤1061 \leq x, y \leq 10^6.

참고: 답은 32비트 정수에 들어가지 않을 수 있으므로, C++을 사용한다면 오버플로에 주의해야 한다.

힌트

이 그림은 예제 11의 처음 이틀에 해당한다. 첫날이 끝난 뒤 가격의 합은 1616이므로, 출력의 첫 번째 정수는 1616이다.

예제2

  1. 예제 1

    입력
    5
    2 1 1 2 5
    6
    INFLATION 1
    SET 3 2
    SET 5 2
    INFLATION 4
    SET 6 1
    SET 10 1
    
    예상 출력
    16
    14
    14
    34
    14
    5
    
  2. 예제 2

    입력
    3
    1 4 1
    5
    SET 1 1
    SET 3 4
    INFLATION 2
    SET 3 1
    SET 6 4
    
    예상 출력
    6
    6
    12
    8
    6