문제 출처 : https://www.acmicpc.net/problem/17521

 

17521번: Byte Coin

문제 국제자본부동산회사(ICPC)는 바이트 코인(Byte Coin)에 자금을 투자하고 있다. 바이트 코인은 김박사가 만든 가상 화폐이다. 실제로는 바이트 코인 가격을 예상할 수 없지만 이 문제에서는 바이트 코인 가격 등락을 미리 정확히 예측할 수 있다고 가정하자. 우리는 1일부터 n일까지 n일 동안 그림 1과 같이 바이트 코인의 등락을 미리 알 수 있으며 우리에게는 초기 현금 W가 주어져 있다. 그림 1의 빨간색 네모는 해당 일자의 바이트 코인 가격을 나

www.acmicpc.net

이 문제는 예전 ICPC 출전하였을때 다른 팀원이 풀고 내가 풀어보지 못한 문제였다.

그래프에서 모든 값을 알 수 있으니 높낮이의 아래와 위를 찾아서 계산을 해주면 되는 문제이다.

계산을 하면 할수록 값이 커져서 int 값을 초과할 수 있으니 long long int를 써야하는 문제이기도 하다. 

아래는 해당 문제를 해결한 소스이다. 

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
#include<stdio.h>
#pragma warning(disable:4996)
int arr[16];
int main()
{
    int n;
    int w;
    int j;
    int temp=0;
    int save_min = 0;
    int save_max = 0;
    scanf("%d %d"&n, &w);
    long long int value = 0;
    for (int i = 0; i < n; i++)
        scanf("%d"&arr[i]);
    value = value + w;
    for (int i = 1; i < n; i++)
    {
        if (arr[i] > arr[save_min])
        {
            save_max = i;
            for (j = i; j < n; j++)
            {
                if (arr[j] < arr[save_max])
                {
                    temp = j;
                    break;
                }
                else
                    save_max = j;
            }
            value = (value / arr[save_min]) * arr[save_max] + value % arr[save_min];
            save_min = temp;
            i = j;
        }
        else
            save_min = i;
    }
    printf("%lld", value);
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
블로그 이미지

뀨심볼

깃허브 주소는 : https://github.com/hhyc2 입니다~

,