AtCoder Beginner Contest 189振り返り

ABC189に参加しました。
時間内にABC3問をACできました。
復習します。

A - Slot

◆問題文
あなたはスロットマシーンで遊んでいます。スロットを回した結果は3文字の英大文字C1,C2,C3で表され、これらが全て同じ文字であるとき当たりです。当たりかどうか判定してください。
◆制約
Ciは英大文字
https://atcoder.jp/contests/abc189/tasks/abc189_a

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

class Hello
{
    static void Main(string[] args)
    {
        //Cの値を保持する
        //var X_Y = Console.ReadLine().Split().Select(x => int.Parse(x)).ToArray();
        var C = Console.ReadLine();
        //回答用変数
        var ans = "Lost";
        //Cの3文字判定
        if (C[0] == C[1] && C[1] == C[2] && C[2] == C[0])
        {
            ans = "Won";
        }
        Console.WriteLine(ans);
    }
}

B - Alcoholic

◆問題文
高橋君はお酒をN杯飲みました。i番目に飲んだお酒は、量がVi ml、アルコール度数がPi %です。
高橋君はアルコールの摂取量がX mlを超えると酔っ払います。
高橋君が酔っ払ったのは何杯目のお酒を飲んでいるときですか。
ただし、N杯全てのお酒を飲んだあとでも酔っ払っていない場合は、かわりに-1を出力してください。
◆制約
入力は全て整数
1≤N≤10^3
0≤X≤10^6
1≤Vi≤10^3
0≤Pi≤100
https://atcoder.jp/contests/abc189/tasks/abc189_b

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

class Hello
{
    static void Main(string[] args)
    {
        //N,Xの値を保持する
        var N_X = Console.ReadLine().Split().Select(x => int.Parse(x)).ToArray();
        var N = N_X[0];
        var X = N_X[1];
        //アルコール許容度
        var ans = 0M;
        //N回分ループしアルコールの許容度を超えているかチェックする
        for (var n = 0; n < N; n++)
        {
            var alco = Console.ReadLine().Split().Select(x => Decimal.Parse(x)).ToArray();
            ans += alco[0] * (alco[1] / 100);
            if (X < ans)
            {
                Console.WriteLine(n + 1);
                return;
            }
        }
        Console.WriteLine("-1");
    }
}

C - Mandarin Orange

◆問題文
高橋君の前にN枚の皿が一列に並べられており、左からi番目の皿にはAi個のみかんが置かれています。
高橋君は次の3つの条件を全て満たすような整数の組(l,r,x)を1つ選びます。
1≤l≤r≤N
1≤x
l以上r以下の全ての整数iについて、x≤Ai
その後、高橋君はl番目からr番目まで(両端を含む)の全ての皿からみかんをx個ずつ取って食べます。
整数の組(l,r,x)を適切に選んだとき、高橋君は最大で何個のみかんを食べることができますか。
◆制約
入力は全て整数
1≤N≤10^4
1≤Ai≤10^5
https://atcoder.jp/contests/abc189/tasks/abc189_c

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

class Hello
{
    static void Main(string[] args)
    {
        //Nの値を保持する
        var N = int.Parse(Console.ReadLine());
        //A1...An
        var As = Console.ReadLine().Split().Select(x => int.Parse(x)).ToArray();
        //As配列の重複を削除し、昇順に並び替える
        var orderAsc = As.Distinct().OrderBy(x => x).ToArray();
        var tmpMax = 0;
        //As配列内の値をorderAscの小さい順にチェックしていく
        for (var n = 0; n < orderAsc.Count(); n++)
        {
            var tmp = 0;
            foreach (var i in As)
            {
                //もしorderAscの値よりAiが小さければそこまでのMax値を一時的に保持する
                if (orderAsc[n] <= i)
                {
                    tmp += orderAsc[n];
                }
                else
                {
                    if (tmpMax < tmp)
                    {
                        tmpMax = tmp;
                    }
                    tmp = 0;
                }
            }
            //最大値を更新していればMaxを入れ替え
            if (tmpMax < tmp)
            {
                tmpMax = tmp;
            }
        }
        Console.WriteLine(tmpMax);
    }
}