トップページに戻る    次の競技プログラミングの問題へ    前の競技プログラミングの問題へ

AGC-001-A BBQ Easy

■■■問題■■■

高橋君はバーベキューをしようとしています。
バーベキューでは2本の串にいくつかの具材を刺した串焼きをN個作る予定です。

串焼きの例
串は2N本あり、i番目の串の長さはLiです。具材は無限に用意されています。 串を2本組にして具材を刺して串焼きにするのですが、 2本の串のうち短い方の長さをxとすると、 串焼きには最大x個の具材を刺すことができます。 うまく串を組み合わせたとき、 N個の串焼きに刺すことのできる具材の個数の和の最大値はいくらになるでしょうか?

■■■入力■■■

N
L1 L2 ・・・ L2N

●1 <= N <= 100
●1 <= Li <= 100
●Liは整数である

■■■出力■■■

N個の串焼きに刺すことのできる具材の個数の和の最大値を出力せよ。


C#のソース

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static string InputPattern = "InputX";

    static List<string> GetInputList()
    {
        var WillReturn = new List<string>();

        if (InputPattern == "Input1") {
            WillReturn.Add("2");
            WillReturn.Add("1 3 1 2");
            //3
            //1番目と3番目、2番目と4番目の串を組にすると、
            //それぞれの串焼きには1個、2個の具材を刺すことができ、
            //合計3個の具材を刺すことができます。
        }
        else if (InputPattern == "Input2") {
            WillReturn.Add("5");
            WillReturn.Add("100 1 2 3 14 15 58 58 58 29");
            //135
        }
        else {
            string wkStr;
            while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
        }
        return WillReturn;
    }

    static void Main()
    {
        List<string> InputList = GetInputList();
        int[] LArr = InputList[1].Split(' ').Select(X => int.Parse(X)).ToArray();
        Array.Sort(LArr);

        int Answer = 0;
        for (int I = 0; I <= LArr.GetUpperBound(0); I += 2) {
            Answer += LArr[I];
        }
        Console.WriteLine(Answer);
    }
}


解説

昇順にソートして、順にペアを決めてます。