寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

Aizu Online Judge in C #ALDS1_1_D Maximum Profit

Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。

・問題
 FX取引では、異なる国の通貨を交換することで為替差の利益を得ることができます。
 例えば、1ドル100円の時に 1000ドル買い、価格変動により 1ドル 108円になった時に売ると、
 (108円 − 100円) × 1000ドル = 8000円の利益を得ることができます。
 ある通貨について、時刻 t における価格
f:id:neguse_atama:20200423162857p:plain
 が入力として与えられるので、価格の差
f:id:neguse_atama:20200423162924p:plain
 の最大値を求めてください。

・入力される値
 最初の行に整数 n が与えられます。続く n 行に整数
f:id:neguse_atama:20200423162857p:plain
 が順番に与えられます。

・期待する出力
 最大値を1行に出力してください。

・条件
f:id:neguse_atama:20200423162631p:plain

僕が作成、提出したコードは、以下のとおりです。

/*
 ALDS1_1_D Maximum Profit
 http://judge.u-aizu.ac.jp/
 提出コードの解答例
 https://neguse-atama.hatenablog.com
*/
#include<stdio.h>
int main(void){
    int loop,n;
    scanf("%d",&n);
    int r[n];
    for(loop=0;loop<n;++loop){
        scanf("%d",&r[loop]);
    }
    int min=r[0];
    int max=r[1]-r[0];
    for(loop=1;loop<n;++loop){
        if(max<r[loop]-min){
            max=r[loop]-min;
        }
        if(min>r[loop]){
            min=r[loop];
        }
    }
    printf("%d\n",max);
    return 0;
}

設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/
ALDS1_1_D Maximum Profit