🔻PS/Baekjoon

[Baekjoon] 백준 25965 미션 도네이션 C++

_니지 2022. 11. 21. 12:28

https://www.acmicpc.net/problem/25965

 

25965번: 미션 도네이션

리그오브전설 스트리머 순범이는 트위치 플랫폼으로 시청자를 끌어모으고 있다. 순범이는 '트윕' 음성 도네이션을 통해 시청자들과 소통하고는 한다. 순범이는 트윕에 '미션' 기능이 있다는 것

www.acmicpc.net

 

문제

리그오브전설 스트리머 순범이는 트위치 플랫폼으로 시청자를 끌어모으고 있다. 순범이는 '트윕' 음성 도네이션을 통해 시청자들과 소통하고는 한다. 순범이는 트윕에 '미션' 기능이 있다는 것을 알고, 자신의 리그오브 전설 실력을 활용해 매 게임마다 미션 기능으로 돈을 끌어모으려고 한다. 미션 기능을 이용하는 시청자가 너무 많을 때도 있어서 순범이는 게임이 끝난 후 자신이 미션으로 받을 수 있는 총 도네이션 금액이 얼마인지를 구하는 계산 프로그램을 작성하고자 한다. 각 게임들은 여러 개의 미션으로 이루어져 있으며, 각 미션들은 킬당 K원 추가, 데스당 D원 차감, 어시스트당 A원 추가의 형식으로 주어진다. 만약 어떤 미션의 계산 금액이 0보다 작은 경우에는 총 금액에 이를 합산하지 않는다. 각 게임을 새로 시작할 때에는 도네이션 금액은 0부터 시작한다. 순범이가 각 게임을 마칠 때마다 받게 되는 총 도네이션 금액을 구해보자.

입력

첫 줄에 총 게임의 수 N이 주어진다. (1≤N≤50)

각 게임마다 첫 줄에 총 미션의 수 M이 주어지며, M개의 줄에 거쳐 각 미션의 내용이 주어진다. (1≤M≤100)

각 미션들은 킬당 추가해야 하는 금액 K, 데스당 차감해야 하는 금액 D, 어시스트당 추가해야 하는 금액 A가 공백으로 구분되어 주어진다. (1000≤K,D,A≤5×107)

각 게임당 마지막 줄에 게임이 종료된 후 순범이의 킬 k, 데스 d, 어시스트 a가 공백으로 구분해 주어진다. (0≤k,d,a≤50)

출력

각 게임마다 순범이가 받는 총 도네이션 금액을 순서대로 한 줄씩 출력한다.

예제 입력 1 

2
2
1000 2000 3000
1000 4000 1000
4 1 2
1
4000 3000 2000
2 4 2

예제 출력 1

10000
0

예제 입력 2 

1
3
9146 6114 4301
7587 5074 9944
3175 9794 3119
1 5 5

예제 출력 2 

32018

예제 입력 3 

3
4
13239 13091 11619
10431 6300 10235
14340 8606 9048
12777 10975 14396
8 2 0
3
8937 9151 1868
13650 2597 1531
13746 6384 11839
4 0 9
2
3934 5773 8056
11015 5695 9285
13 6 14

예제 출력 3 

328352
282474
368303

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using namespace std;
#include <iostream>
#include <string>
#include <cstring>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <functional>
#include <cmath>
#include <map>
#include <set>
#define _CRT_SECURE_NO_WARNINGS
#define INF 987654321
#define ll long long
typedef pair<intint> PII;
 
 
int t, mission;
int k, d, a;
 
int main() {
    cin >> t;
 
    while (t--) {
        ll ans = 0, temp = 0;
        ll arr[101][3];
 
        cin >> mission;
        for (int i = 0; i < mission; i++) {
            cin >> arr[i][0>> arr[i][1>> arr[i][2];
        }
        cin >> k >> d >> a;
 
 
 
        for (int i = 0; i < mission; i++) {
 
            temp += (arr[i][0* k - arr[i][1* d + arr[i][2* a);
 
            if (temp < 0) temp = 0;
 
            ans += temp;
 
            temp = 0;
        }
    
        cout << ans << "\n";
    }
 
 
    return 0;
}
cs

 

728x90
반응형