public long minimizeCost(int[] positions, int[] lengths) { seg[] l = new seg[positions.Length]; for (int i = 0;i < positions.Length; i++) { seg o = new seg(); o.start = positions[i]; o.length = lengths[i]; o.n = 1; l[i] = o; } Array.Sort(l, delegate(seg a, seg b){ return a.start.CompareTo(b.start); }); for (int i = 0; i < positions.Length-1; i++) { if (l[i].start + l[i].length == l[i+1].start) { l[i].length = l[i].length + l[i+1].length; l[i+1] = null; } } //pick the heaviest one //f(p) = p(x-y)+yg //c += minima of f(p) return 0; }
/*int[] X1 = new int[10000]; * int[] Y1 = new int[10000]; * int[] X2 = new int[10000]; * int[] Y2 = new int[10000]; * X1[0] = 5;*/ private void init() { seg a = new seg(50, 250, 350, 423); seg b = new seg(350, 423, 350, 77); seg c = new seg(350, 77, 50, 250); A[0] = a; A[1] = b; A[2] = c; }