我有一个代码可以在我的PC上以及HackerEarth提供的控制台中正常工作(带有自定义输入),但是在Hacker Earth上提交该代码时,它在53个示例中的2个测试用例中返回了NZEC运行时错误。
This is the problem description
这是我的解决方案:
fn_GetColumns(1)
我认为问题在于为词典分配了过多的内存。 这些是我遇到运行时错误的2个测试用例:
SELECT * FROM Names
这个测试用例很小,但是它也返回错误。
using System;
using System.Collections.Generic;
class Test
{
static int xx1=-1, yy1=-1, xx2=-1, yy2=-1,dyy=-1;
static void store(int x1,int x2,int y1,int y2,int dy)
{
dyy = dy;
xx1 = x1;
xx2 = x2;
yy1 = y1;
yy2 = y2;
}
public static void Main(string[] args)
{
int n = int.Parse(Console.ReadLine());
var a = new Dictionary<int, SortedSet<int>>();
for (int i = 0; i < n; i++)
{
var s = Console.ReadLine().Trim().Split(' ');
var x = int.Parse(s[0]);
var y = int.Parse(s[1]);
if (a.ContainsKey(x))
{
a[x].Add(y);
}
else
{
var set = new SortedSet<int>();
set.Add(y);
a.Add(x,set);
}
}
foreach(KeyValuePair<int, SortedSet<int>> entry in a)
{
var set = entry.Value;
foreach (int j in set)
{
foreach (int k in set)
{
if (k > j)
{
int y1 = j,x1=entry.Key,y2=k;
int dy = y2 - y1;
int x2 = x1 + dy;
if(a.ContainsKey(x2) && a[x2].Contains(y1) && a[x2].Contains(y2))
{
if (dy > dyy)
{
store(x1,x2,y1,y2,dy);
}
else if (dy == dyy)
{
if (y1 < yy1)
{
store(x1,x2,y1,y2,dy);
}
else if(y1 == yy1)
{
if (x1 < xx1)
{
store(x1,x2,y1,y2,dy);
}
}
}
}
}
}
}
}
if (xx1 == -1) Console.WriteLine(-1);
else Console.WriteLine(xx1+ " "+yy1);
}
}