class HW1 { static int[] array; final static int length = 100000; static void makeArray() { array = new int[length]; for (int i = 0; i < length; i++) { array[i] = 1; } array[0] = 2; /* results: 2 300002 599996 */ /* array[0] = 3; => results: 6 300006 600000 */ } static int convert(int v) { int i; /* Arbitrary time-consuming calculation: */ for (i = 0; i < 1000; i++) { v = ((v * v) + v) % 10; } return v; } static int deconvert(int v) { return v; /* for part 2, use instead: return convert(v); */ } static int doSection(int start, int end, int accum) { int i; for (i = start; i < end; i++) { accum += convert(array[i]); array[i] = deconvert(accum); } return accum; } /*****************************************/ /* No-threads case: */ static void sequentialSums() { doSection(0, length, 0); } /*****************************************/ /* Two-threads case: */ static void parallelSums() { /* ... you fill this in ... */ } /*****************************************/ public static void main(String[] argv) { makeArray(); sequentialSums(); System.out.println(array[0] + " " + array[length / 2] + " " + array[length - 1]); } }