Hatena::Grouptopcoder

yambe2002の日記

 | 

2016-01-20

SRM678 Div2 Mid: AttackOfTheClones

13:37

オビさんはTシャツをN毎もっている。そして、この世界では一週間はN日である。

彼は一週間、毎日違うTシャツを着たい。Tシャツは着たら洗う必要があり、洗うのには最低でN-2日かかる。

最初の週のTシャツを着る順番と、最後の週のTシャツを着る順番が与えられる。

このとき、最後の週の順番にするまで、何週間かかるか。


もっとも日数がかかるTシャツは、最終週の位置が最初の週より前にあるもので、差が最大のもにになる。これを返せばよい。

    public int count(int[] firstWeek, int[] lastWeek) {
        var f = firstWeek.ToList();
        var l = lastWeek.ToList();

        int res = 1;

        for (int idx = lastWeek.Length - 1; idx > 0; idx--)
        {
            var tgt = f[idx];
            var tgtIdx = l.IndexOf(tgt);

            if (tgtIdx < idx) res = Math.Max(res, idx - tgtIdx + 1);
        }

        return res;
    }
 |