AtCoderをC#で始めてみたよ　-AtCoder Beginner Contest 360-

ABC360に参加したぞーー
前回のは[こちら]()

# 結果

https://atcoder.jp/contests/abc360

また，3完，4014位．．．今回はDまで解ける兆しがあったがTLEになってだめだった


## [A - A Healthy Breakfast](https://atcoder.jp/contests/abc360/tasks/abc360_a)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3817552/ab3228d4-d208-40f8-132d-251bf6541c5a.png)


### コメント

たかだか6通りしかないので適当
```C#
using System;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        string s = Console.ReadLine();
        string ans = "No";

        if (s[0] == 'R') ans = "Yes";
        if (s[1] == 'R') if (s[2] == 'M') ans = "Yes";
        Console.WriteLine(ans);

    }
}
```
## [B - Vertical Reading](https://atcoder.jp/contests/abc360/tasks/abc360_b)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3817552/3174b99b-f238-d1c7-5451-12b18f9323ad.png)




### コメント
なんか文字列系のすごい苦手なんだよな．全部数字で頼む
```C#
using System;

class Program
{
    static void Main()
    {

        string[] input = Console.ReadLine().Split(' ');
        string S = input[0];
        string T = input[1];

        string ans = "No";

        for (int w = 1; w < S.Length; w++)
        {
            for (int c = 1; c <= w; c++)
            {
                if (IsMatching(S, T, c, w))
                {
                    ans = "Yes";
                    break;
                }
            }
        }
        Console.WriteLine(ans);
    }

    static bool IsMatching(string S, string T, int c, int w)
    {
        string concatenated = "";
        for (int i = 0; i < S.Length; i += w)
        {
            if (i + c - 1 < S.Length)
            {
                concatenated += S[i + c - 1];
            }
        }
        return concatenated.Equals(T);
    }
}
```

## [C - Move It](https://atcoder.jp/contests/abc360/tasks/abc360_c)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3817552/bea1002f-a495-38f5-189c-353df7975a44.png)

### コメント
これは割とすんなりできた．ダブってる箱から最大値を除いた部分を運ぶ．逆に全部の合計から各箱の最大値を引いていけばいいんじゃないかと気づき，boxを用意し，各箱に入っている最大値をメモしていき最後に合計から全部引く．

```C#
using System;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        int n = int.Parse(Console.ReadLine());
        int[] a = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
        int[] w = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();

        long sum = 0;

        for (int i = 0; i < n; i++) sum += w[i];

        int[] box = new int[n];
        for (int i = 0; i < n; i++) box[a[i] - 1] = Math.Max(box[a[i] - 1], w[i]);

        for (int i = 0; i < n; i++) sum -= box[i];
        Console.WriteLine(sum);
    }
}
```

## [D - Ghost Ants](https://atcoder.jp/contests/abc360/tasks/abc360_d)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3817552/ad2bda8e-6f91-9192-2b1b-9b87f598387e.png)

### コメント
右向きの蟻と左向きの蟻でリストを作ってソートする．そのあと右向きの蟻一つ一つに対して，①右向きの蟻より左向きの蟻の方が大きい，②2つの蟻の差が2T以上である，の2条件を満たせばいいじゃんってことには気づいたけどなんかタイムエラーでダメだった．．．
回答を見るとしゃくとり法を使えば良いと書いてあって「ああああああ」ってなった．

```C#
using System;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        string[] input = Console.ReadLine().Split(' ');
        int n = int.Parse(input[0]);
        int t = int.Parse(input[1]);
        string s = Console.ReadLine();
        int[] x = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
        long count = 0;

        List<int> rightArrowAnts = new List<int>();
        List<int> leftArrowAnts = new List<int>();

        for (int i = 0; i < n; i++)
        {
            if (s[i] == '1') rightArrowAnts.Add(x[i]);
            else leftArrowAnts.Add(x[i]);
        }

        rightArrowAnts.Sort();
        leftArrowAnts.Sort();

        t *= 2;
        int a = 0;
        int b = 0;

        for (int i = 0; i < rightArrowAnts.Count; i++)
        {
            while (a < leftArrowAnts.Count && leftArrowAnts[a] < rightArrowAnts[i]) a++;
            while (b < leftArrowAnts.Count && (long)leftArrowAnts[b] - (long)t <= (long)rightArrowAnts[i]) b++;
            count += b - a;
        }
        Console.WriteLine(count);
    }
}
```

今回は絶対Ｄまでいけたなーーーー悔しい