競プロをしながら、節約と株式投資でセミリタイアを目指す東大卒のブログ

東大卒でメーカー勤務の私がセミリタイアするために投資や競プロを頑張っていこうという趣旨で始めたブログです。独身男性です。火木土日に更新予定です。お金について考えています。

ABC160で書いたコード

using System;
using System.Numerics;
using System.Linq;
using System.Collections.Generic;
using System.Text;

namespace Atcoder20200328
{
    class ProgramA
    {
        static void Main(string args)
        {
            //入力
            string s = Console.ReadLine();

            //3文字目と4文字目、5文字目と6文字目が一致するか確認する
            if(s[2] == s[3] && s[4] == s[5])
                Console.WriteLine("Yes");
            else
                Console.WriteLine("No");
        }
    }

    class ProgramB
    {
        static void Main(string args)
        {
            
            //入力
            long x = long.Parse(Console.ReadLine());

            //500円の最大換算枚数を出した後、5円の最大枚数を出して、それぞれ1000,5をかける
            Console.WriteLine(x/500 * 1000 + (x- (long)(x/500)*500)/55);
            

    
        }
    }

    class ProgramC
    {
        static void Main(string args)
        {
            
            //入力
            string s = Console.ReadLine().Split(' ');
            long k = long.Parse(s[0]);
            long n = long.Parse(s[1]);

            string a = Console.ReadLine().Split(' ');
            long ans = 0;

            //スタート位置を順繰りに動かして考える
            for(long i = 0i < n - 1;i++)
            {
                long dis = k -(long.Parse(a[i + 1]) - long.Parse(a[i]));
                ans = Math.Min(disans);//小さい方を取り出す
            }

            //最後のだけは別で計算する
            long dis2 = long.Parse(a[n]) - long.Parse(a[0]);
            ans = Math.Min(dis2ans);//小さい方を取り出す

            Console.WriteLine(ans);
        } 
    }  

    class ProgramD
    {
        static void Main(string args)
        {
            
            //入力
            string a = Console.ReadLine().Split(' ');
            long n = long.Parse(a[0]);
            long x = long.Parse(a[1]);
            long y = long.Parse(a[2]);
            long ans = new long[n];

            //二重ループで全経路の長さを求める
            for(long i = 1;i <= n;i++)
                for(long j = i+1;j <= n;j++)
                {
                    if(j <= x || y <= i)
                        ans[j - i]++;//単純に経路の邪魔がない場合
                    else
                        ans[Math.Min(j - iMath.Abs(y - j)+ Math.Abs(x - i) + 1)]++;//途中ショートカットがある場合は絶対値でショートカットできるか見る
                }

            for(long i = 1;i <= n;i++)
                Console.WriteLine(ans[i]);
        }
 
    }


    class ProgramE
    {
        static void Main(string args)
        {
            
            //入力
            string ss = Console.ReadLine().Split(' ');
            long x = long.Parse(ss[0]);
            long y = long.Parse(ss[1]);
            long a = long.Parse(ss[2]);
            long b = long.Parse(ss[3]);
            long c = long.Parse(ss[4]);
            string pi = Console.ReadLine().Split(' ');
            string qi = Console.ReadLine().Split(' ');
            string ri = Console.ReadLine().Split(' ');
            long p = new long[a];
            long q = new long[b];
            long r = new long[c];
            long[] s = new long[x + y + c];

            for(long i = 0;i < a;i++)
                p[i] = long.Parse(pi[i]);

            for(long i = 0;i < b;i++)
                q[i] = long.Parse(qi[i]);

            for(long i = 0;i < c;i++)
                r[i] = long.Parse(ri[i]);

            //赤リンゴ、緑リンゴを小さい順にソート
            Array.Sort(p);
            Array.Sort(q);

            //赤リンゴをおおきい順にx個取り出す
            for(long i = 0;i < x;i++)
                s[i] = p[a1i];

            //緑リンゴをおおきい順にy個取り出す
            for(long i = 0;i < y;i++)
                s[x + i] = q[b - 1i];

            //無色リンゴを取り出す
            for(long i = 0;i < c;i++)
                s[x + yi] = r[i];

            //小さい順に並べる
            Array.Sort(s);

            long ans = 0;
            
            //おおきい順から取り出していく
            for(long i = 0i < x + y;i++)
                ans +=s[x + yc-1 - i];

            //答え出力
            Console.WriteLine(ans);
        }
    }
    
}