実は並び替える必要はなく、重複している値を取り除いて残ったものを数えればいい。 LINQ 便利。
using System; using System.Linq; namespace ABC085B { class Program { static void Main(string[] args) { var n = int.Parse(Console.ReadLine()); var d = new int[n]; for (var i = 0; i < n; i++) { d[i] = int.Parse(Console.ReadLine()); } var x = d.Distinct().Count(); Console.WriteLine(x); } } }