Submission #3402152


Source Code Expand

using System;
using System.Linq;//リストの使用
using System.Collections.Generic;
class Program
{
	static void Main()
	{
		long n = long.Parse(Console.ReadLine());//int.Parseは文字列を整数に変換。
    long[][] vertexesL = new long[n][];//座標と番号
    long[][] vertexesR = new long[n][];
    long[] looked = new long[n];//LかRのどちらかを確認したら1
    long checkingL = 0;
    long checkingR = 0;
    long answer = 0;
    long distanceMemo = 0;//距離の総和をメモ
    long nowPosition = 0;
    for(long i = 0; i < n; i++)
    {
      long[] nums = Array.ConvertAll(Console.ReadLine().Split(' '),long.Parse);
      vertexesL[i] = new long[2];
      vertexesL[i][0] = nums[0];
      vertexesL[i][1] = i;
      vertexesR[i] = new long[2];
      vertexesR[i][0] = nums[1];
      vertexesR[i][1] = i;
    }

    Array.Sort(vertexesL, (a, b) => b[0].CompareTo(a[0]));//ソート
    Array.Sort(vertexesR, (a, b) => a[0].CompareTo(b[0]));

    while(true)
    {
      while(true)//右へ
      {
        if(looked[vertexesL[checkingL][1]] == 0)
        {
          if(nowPosition < vertexesL[checkingL][0])//移動する場合
          {
            distanceMemo += Math.Abs(nowPosition - vertexesL[checkingL][0]);
            nowPosition = vertexesL[checkingL][0]);
          }
          looked[vertexesL[checkingL][1]] = 1;
          break;
        }else checkingL++;
        if(checkingL >= n) break;
      }

      while(true)//左へ
      {
        if(looked[vertexesR[checkingR][1]] == 0)
        {
          if(nowPosition < vertexesR[checkingR][0])//移動する場合
          {
            distanceMemo += Math.Abs(nowPosition - vertexesR[checkingR][0]);
            nowPosition = vertexesR[checkingR][0]);
          }
          looked[vertexesR[checkingR][1]] = 1;
          break;
        }else checkingR++;
        if(checkingR >= n) break;
      }
      
      if(checkingL >= n)//全て確認した
      {
        distanceMemo += Math.Abs(nowPosition);
        answer = Math.Max(answer, distanceMemo);
      }
    }

    nowPosition = 0;
    distanceMemo = 0;
    checkingL = 0;
    checkingR = 0;

    while(true)
    {
      while(true)//左へ
      {
        if(looked[vertexesR[checkingR][1]] == 1)
        {
          if(nowPosition < vertexesR[checkingR][0])//移動する場合
          {
            distanceMemo += Math.Abs(nowPosition - vertexesR[checkingR][0]);
            nowPosition = vertexesR[checkingR][0]);
          }
          looked[vertexesR[checkingR][1]] = 2;
          break;
        }else checkingR++;
      if(checkingR >= n) break;
      }
    
      while(true)//右へ
      {
        if(looked[vertexesL[checkingL][1]] == 1)
        {
          if(nowPosition < vertexesL[checkingL][0])//移動する場合
          {
            distanceMemo += Math.Abs(nowPosition - vertexesL[checkingL][0]);
            nowPosition = vertexesL[checkingL][0]);
          }
          looked[vertexesL[checkingL][1]] = 2;
          break;
        }else checkingL++;
        if(checkingL >= n) break;
      }
      
      if(checkingL >= n)//全て確認した
      {
        distanceMemo += Math.Abs(nowPosition);
        answer = Math.Max(answer, distanceMemo);
      }
    }
    
		Console.WriteLine(answer);
	}
}

Submission Info

Submission Time
Task C - Interval Game
User suikameron
Language C# (Mono 4.6.2.0)
Score 0
Code Size 3403 Byte
Status CE

Compile Error

./Main.cs(40,49): error CS1525: Unexpected symbol `)', expecting `;' or `}'
./Main.cs(55,49): error CS1525: Unexpected symbol `)', expecting `;' or `}'
./Main.cs(84,49): error CS1525: Unexpected symbol `)', expecting `;' or `}'
./Main.cs(99,49): error CS1525: Unexpected symbol `)', expecting `;' or `}'