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 `}'