Logo
(追記) (追記ここまで)

31001번 - 주식 시뮬레이션

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 1024 MB152832726723.157%

문제

하이비는 오늘도 주식 시장에 돈을 투자했다가 돈을 잃고 말았다. 매일 돈을 잃고만 있는 하이비를 보며 안타까워하던 유틸은 주식 시뮬레이션 프로그램이 담긴 USB를 전달하며 투자 연습을 해보라고 제안했다.

하이비는 집에 도착해 컴퓨터에 USB를 꽂았다. 주식 시뮬레이션 프로그램을 실행해 보니 7ドル$가지 메뉴가 나타났다. 각 메뉴는 다음과 같다.

  • 1 $A$ $B$: 회사 $A$의 주식을 $B$주 산다. 현재 보유하고 있는 현금으로 회사 $A$의 주식을 $B$주 살 수 없다면 한 주도 사지 않는다.
  • 2 $A$ $B$: 회사 $A$의 주식을 $B$주 판다. 현재 보유하고 있는 회사 $A$의 주식이 $S_A$주일 때, $S_A = 0$이라면 아무 일도 일어나지 않는다. $B \ge S_A$라면 $S_A$주를 모두 판다.
  • 3 $A$ $C$: 회사 $A$의 주가가 $C$원 올랐다. $C < 0$인 경우 주가가 $|C|$원 떨어진 것이다.
  • 4 $D$ $C$: $D$번 그룹에 속하는 회사들의 주가가 $C$원 올랐다. $C < 0$인 경우 주가가 $|C|$원 떨어진 것이다.
  • 5 $D$ $E$: $D$번 그룹에 속하는 회사들의 주가가 $E$% 올랐다. $E < 0$인 경우 주가가 $|E|$% 떨어진 것이다.
  • 6: 현재 하이비가 보유하고 있는 현금을 출력한다.
  • 7: 현재 하이비가 보유하고 있는 주식들을 전부 팔았을 때, 보유하고 있는 현금의 총합을 출력한다.

또한 프로그램 매뉴얼에 따르면 다음과 같은 특징이 있다.

  • 처음에 하이비가 보유하고 있는 주식은 없다.
  • 회사 이름은 대소문자를 구별한다.
  • 주식 시뮬레이션 프로그램에서 주식을 사거나 팔 때의 단위는 10ドル$ 원이다. 5번 메뉴의 경우 변동률에 따라 회사들의 주가를 반영하고 난 뒤 일의 자리에서 버림한다.
  • 모든 시점에 대해 각 회사의 주가 $P_i$는 0ドル \le P_i \le 2 \times 10^{9}$ $(1 \le i \le N)$ 임이 보장된다.
  • 모든 시점에 대해 하이비가 보유하고 있는 주식들을 전부 팔았을 때, 보유하고 있는 현금의 총합이 2ドル \times 10^{12}$ 원을 초과하지 않음이 보장된다.
  • 1번, 2번, 3번 메뉴 입력에서 $A$는 주식 시장에 상장한 회사임이 보장된다.
  • 4번 또는 5번 메뉴 입력에서 $D$번 그룹에 속하는 회사가 하나 이상 존재한다.
  • 6번 또는 7번 메뉴 입력은 최소 한 번 이상 주어진다.

하이비는 다양한 데이터를 넣어보면서 주식 시뮬레이션을 해보기 시작했다. 그런데 한 가지 문제가 있었다. 6번 또는 7번 메뉴를 선택하면 현금이 출력되어야 하는데, 프로그램을 잘못 구현했는지 전부 ???로만 뜨는 것이었다.

하이비는 유틸에게 전화를 걸어 프로그램에 문제가 있다고 이야기했다. 그러자 유틸은 입력한 데이터를 전부 주면, 6번 또는 7번 메뉴를 선택했을 때의 결과를 알려주겠다고 했다. 하지만 유틸은 지금 다른 프로그램을 만들고 있느라 너무 바빠 여러분에게 이 일을 대신 처리해 줄 수 있겠냐고 부탁했다. 유틸을 도와주도록 하자!

입력

첫 번째 줄에 주식 시장에 상장한 회사의 개수 $N,ドル 하이비가 보유하고 있는 현금 $M,ドル 메뉴 입력의 개수 $Q$가 공백으로 구분되어 주어진다. $(1 \leq N \leq 100$; 10ドル^6 \leq M \leq 10^7$; 1ドル \leq Q \leq 500)$

두 번째 줄부터 $N$개의 줄에 걸쳐 회사가 속하는 그룹의 번호 $G,ドル 회사 이름 $H,ドル 시뮬레이션 시작 시점에서 회사 1주의 가격 $P$가 공백으로 구분되어 주어진다. 회사 이름은 영어 알파벳 대소문자로 구성된 길이 30ドル$ 이하의 문자열이며, 같은 회사 이름이 두 번 이상 등장하지 않는다. $(1 \leq G \leq 100$; 0ドル \leq P \leq 30 ,円 000$; $P$는 10ドル$의 배수$)$

그다음 줄부터 $Q$개의 줄에 걸쳐 메뉴 입력이 주어진다. $(1 \leq B \leq 100$; $-5 ,円 000 \leq C \leq 5 ,円 000$; 1ドル \leq D \leq 100$; $-30 \leq E \leq 30$; $C$는 10ドル$의 배수$)$

입력에서 주어지는 모든 수는 정수이다.

출력

6번, 7번 메뉴 입력의 결과를 한 줄에 하나씩 출력한다.

제한

예제 입력 1

3 5200000 12
1 AAA 20000
1 BBB 25000
2 CCC 30000
1 AAA 100
1 BBB 23
6
1 CCC 7
3 AAA 4350
7
4 1 -5000
5 2 15
7
2 AAA 3
2 CCC 1
6

예제 출력 1

2625000
5635000
5051500
2507550

예제 입력 2

3 1000000 12
1 wolhyang 28310
1 ArenA 18420
2 UTIL 9560
1 wolhyang 1
1 ArenA 6
6
1 UTIL 9
4 1 -5000
7
3 wolhyang -1270
5 2 15
7
2 ArenA 2
2 UTIL 7
6

예제 출력 2

861170
965000
976600
878900

힌트

출처

Contest > BOJ User Contest > 월간 향유회 > 월간 향유회 2023. 12. C번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /