ZeroJudge F818: 物競天擇 (Survival)

題目敘述

每筆資料第一行有一個正整數N,第二行會有N個正整數代表每一隻獅子的身高,第三行會有N個正整數代表每一隻獅子的體重。要求輸出身高*體重之後最小值的獅子的身高與體重。


範例輸入 #1

2

145 34

21 55

範例輸出 #1

34 55


範例輸入 #2

4

361 619 555 855

419 758 549 240

範例輸出 #2

361 419


範例輸入 #3

5

17 100 40 111 68

157 151 25 173 197

範例輸出 #3

40 25


解題思路

使用陣列/Vector先將身高的數值記錄下來,在收體重的資料時直接做乘法並判斷最小值。可以先把第一個獅子的體重設為最小值變數的初始值。

解題程式碼如下 (僅供參考):

#include <iostream>
#include <vector>
using namespace std;

int main() {
    cin.sync_with_stdio(0);
    cin.tie(0);
    int N;
    cin >> N;
    vector<long long int>height;
    for (int i = 0; i<N; i++)
    {
        long long int tmp;
        cin >> tmp;
        height.push_back(tmp);
    }
    long long int min, ans_h, ans_w;
    for (int i = 0; i<N; i++)
    {
        long long int weight;
        cin >> weight;
        long long int calc = weight * height[i];
        if (i == 0)
        {
            min = weight * height[i];
            ans_h = height[i];
            ans_w = weight;
        }
        if (calc < min)
        {
            min = calc;
            ans_h = height[i];
            ans_w = weight;
        }
    }
    cout << ans_h << " " << ans_w << endl;
}

留言

這個網誌中的熱門文章

ZeroJudge M933: 邏輯電路

ZeroJudge A148: You Cannot Pass?!

ZeroJudge M932: 蜜蜂觀察