Submission #1251349


Source Code Expand

Copy
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Numerics;
namespace Codeforces
{
internal class Template
{
private long[] queries = new long[200200];
private long qq;
private Dictionary<Tuple<long, long, long>, long> dp;
private void Solve()
{
//var n = cin.NextLong();
//var x = new long[n];
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Numerics;

namespace Codeforces
{
	internal class Template
	{

		private long[] queries = new long[200200];
		private long qq;
		private Dictionary<Tuple<long, long, long>, long> dp; 

		private void Solve()
		{
			//var n = cin.NextLong();
			//var x = new long[n];
			//var y = new long[n];
			//var min = long.MaxValue;
			//var max = long.MinValue;
			//for (var i = 0; i < n; i++)
			//{
			//	x[i] = cin.NextLong();
			//	y[i] = cin.NextLong();
			//	min = Math.Min(min, Math.Min(x[i], y[i]));
			//	max = Math.Max(max, Math.Max(x[i], y[i]));
			//	if (x[i] > y[i])
			//	{
			//		var temp = x[i];
			//		x[i] = y[i];
			//		y[i] = temp;
			//	}
			//}
			//var ma
			var n = cin.NextLong();
			qq = cin.NextLong();
			var a = cin.NextLong();
			var b = cin.NextLong();
			for (var i = 0; i < qq; i++)
			{
				queries[i] = cin.NextLong();
			}
			dp = new Dictionary<Tuple<long, long, long>, long>();
			var res = Calc(0, Math.Min(a, b), Math.Max(a, b));
			Console.WriteLine(res);
		}

		private long Calc(long q, long a, long b)
		{
			if (q == qq)
			{
				return 0;
			}
			var key = Tuple.Create(q, Math.Min(a, b), Math.Max(a, b));
			if (dp.ContainsKey(key))
			{
				return dp[key];
			}
			var best = long.MaxValue;
			if (queries[q] <= a)
			{
				best = Calc(q + 1, queries[q], b) + Math.Abs(a - queries[q]);
			}
			else if (queries[q] >= b)
			{
				best = Calc(q + 1, a, queries[q]) + Math.Abs(b - queries[q]);
			}
			else
			{
				best = Math.Min(Calc(q + 1, queries[q], b) + Math.Abs(a - queries[q]),
				Calc(q + 1, a, queries[q]) + Math.Abs(b - queries[q]));
			}
			dp[key] = best;
			return best;
		}

		private static readonly Scanner cin = new Scanner();

		private static void Main()
		{
#if DEBUG
			var inputText = File.ReadAllText(@"..\..\input.txt");
			var testCases = inputText.Split(new[] { "input" }, StringSplitOptions.RemoveEmptyEntries);
			var consoleOut = Console.Out;
			for (var i = 0; i < testCases.Length; i++)
			{
				var parts = testCases[i].Split(new[] { "output" }, StringSplitOptions.RemoveEmptyEntries);
				Console.SetIn(new StringReader(parts[0].Trim()));
				var stringWriter = new StringWriter();
				Console.SetOut(stringWriter);
				var sw = Stopwatch.StartNew();
				new Template().Solve();
				sw.Stop();
				var output = stringWriter.ToString();

				Console.SetOut(consoleOut);
				var color = ConsoleColor.Green;
				var status = "Passed";
				if (parts[1].Trim() != output.Trim())
				{
					color = ConsoleColor.Red;
					status = "Failed";
				}
				Console.ForegroundColor = color;
				Console.WriteLine("Test {0} {1} in {2}ms", i + 1, status, sw.ElapsedMilliseconds);
			}
			Console.ReadLine();
			Console.ReadKey();
#else
			new Template().Solve();
			Console.ReadLine();
#endif
		}
	}

	internal class Scanner
	{
		private string[] s = new string[0];
		private int i;
		private readonly char[] cs = { ' ' };

		public string NextString()
		{
			if (i < s.Length) return s[i++];
			var line = Console.ReadLine() ?? string.Empty;
			s = line.Split(cs, StringSplitOptions.RemoveEmptyEntries);
			i = 1;
			return s.First();
		}

		public double NextDouble()
		{
			return double.Parse(NextString());
		}

		public int NextInt()
		{
			return int.Parse(NextString());
		}

		public long NextLong()
		{
			return long.Parse(NextString());
		}
	}
}

Submission Info

Submission Time
Task F - Many Moves
User Neverauskas
Language C# (Mono 4.6.2.0)
Score 0
Code Size 3613 Byte
Status TLE
Exec Time 2109 ms
Memory 38664 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 900
Status
AC × 4
AC × 14
TLE × 20
Set Name Test Cases
Sample example0, example1, example2, example3
All example0, example1, example2, example3, flower0, flower1, flower2, flower3, flower4, flower5, flower6, flower7, flower8, flower9, maxrand0, maxrand1, maxrand2, maxrand3, maxrand4, maxrand5, maxrand6, maxrand7, maxrand8, maxrand9, smallrand0, smallrand1, smallrand2, smallrand3, smallrand4, smallrand5, smallrand6, smallrand7, smallrand8, smallrand9
Case Name Status Exec Time Memory
example0 AC 25 ms 11344 KB
example1 AC 24 ms 11216 KB
example2 AC 24 ms 11216 KB
example3 AC 25 ms 11216 KB
flower0 TLE 2109 ms 34556 KB
flower1 TLE 2109 ms 34560 KB
flower2 TLE 2109 ms 36616 KB
flower3 TLE 2109 ms 34556 KB
flower4 TLE 2109 ms 34676 KB
flower5 TLE 2109 ms 38664 KB
flower6 TLE 2109 ms 36612 KB
flower7 TLE 2109 ms 34436 KB
flower8 TLE 2109 ms 34556 KB
flower9 TLE 2109 ms 36612 KB
maxrand0 TLE 2109 ms 32976 KB
maxrand1 TLE 2109 ms 32976 KB
maxrand2 TLE 2109 ms 31312 KB
maxrand3 TLE 2109 ms 33360 KB
maxrand4 TLE 2109 ms 30928 KB
maxrand5 TLE 2109 ms 30928 KB
maxrand6 TLE 2109 ms 31312 KB
maxrand7 TLE 2109 ms 31312 KB
maxrand8 TLE 2109 ms 31312 KB
maxrand9 TLE 2109 ms 31300 KB
smallrand0 AC 25 ms 9168 KB
smallrand1 AC 25 ms 9168 KB
smallrand2 AC 25 ms 9168 KB
smallrand3 AC 25 ms 9168 KB
smallrand4 AC 25 ms 9168 KB
smallrand5 AC 26 ms 11216 KB
smallrand6 AC 25 ms 9168 KB
smallrand7 AC 25 ms 9168 KB
smallrand8 AC 25 ms 11344 KB
smallrand9 AC 24 ms 9168 KB


2025-03-02 (Sun)
09:44:16 +00:00