Created
August 16, 2018 14:33
-
-
Save chermehdi/ea157673a0ff191b2333d0b5859b500c to your computer and use it in GitHub Desktop.
Minimum scalar product
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.OutputStream; | |
import java.io.IOException; | |
import java.io.InputStream; | |
import java.io.PrintWriter; | |
import java.util.Arrays; | |
import java.util.InputMismatchException; | |
import java.util.Random; | |
import java.io.IOException; | |
import java.io.InputStream; | |
/** | |
* Built using CHelper plug-in Actual solution is at the top | |
* | |
* @author MaxHeap | |
*/ | |
public class Main { | |
public static void main(String[] args) { | |
InputStream inputStream = System.in; | |
OutputStream outputStream = System.out; | |
InputReader in = new InputReader(inputStream); | |
PrintWriter out = new PrintWriter(outputStream); | |
MinimumScalarProduct solver = new MinimumScalarProduct(); | |
int testCount = Integer.parseInt(in.next()); | |
for (int i = 1; i <= testCount; i++) { | |
solver.solve(i, in, out); | |
} | |
out.close(); | |
} | |
static class MinimumScalarProduct { | |
public void solve(int testNumber, InputReader in, PrintWriter out) { | |
int n = in.nextInt(); | |
long[] a = in.nextLongArray(n); | |
long[] b = in.nextLongArray(n); | |
ArrayUtils.sort(a); | |
ArrayUtils.sort(b); | |
ArrayUtils.reverse(b); | |
long ans = 0; | |
for (int i = 0; i < n; i++) { | |
ans += a[i] * b[i]; | |
} | |
out.println("Case #" + testNumber + ": " + ans); | |
} | |
} | |
static class InputReader { | |
private InputStream stream; | |
private byte[] buf = new byte[1 << 13]; | |
private int curChar; | |
private int numChars; | |
public InputReader(InputStream stream) { | |
this.stream = stream; | |
} | |
public int read() { | |
if (this.numChars == -1) { | |
throw new UnknownError(); | |
} else { | |
if (this.curChar >= this.numChars) { | |
this.curChar = 0; | |
try { | |
this.numChars = this.stream.read(this.buf); | |
} catch (IOException ex) { | |
throw new InputMismatchException(); | |
} | |
if (this.numChars <= 0) { | |
return -1; | |
} | |
} | |
return this.buf[this.curChar++]; | |
} | |
} | |
public int nextInt() { | |
int c; | |
for (c = this.read(); isSpaceChar(c); c = this.read()) { | |
} | |
byte sgn = 1; | |
if (c == 45) { | |
sgn = -1; | |
c = this.read(); | |
} | |
int res = 0; | |
while (c >= 48 && c <= 57) { | |
res *= 10; | |
res += c - 48; | |
c = this.read(); | |
if (isSpaceChar(c)) { | |
return res * sgn; | |
} | |
} | |
throw new InputMismatchException(); | |
} | |
public long nextLong() { | |
int c; | |
for (c = this.read(); isSpaceChar(c); c = this.read()) { | |
} | |
byte sgn = 1; | |
if (c == 45) { | |
sgn = -1; | |
c = this.read(); | |
} | |
long res = 0; | |
while (c >= 48 && c <= 57) { | |
res *= 10L; | |
res += c - 48; | |
c = this.read(); | |
if (isSpaceChar(c)) { | |
return res * sgn; | |
} | |
} | |
throw new InputMismatchException(); | |
} | |
public String next() { | |
int c; | |
while (isSpaceChar(c = this.read())) { | |
} | |
StringBuilder result = new StringBuilder(); | |
result.appendCodePoint(c); | |
while (!isSpaceChar(c = this.read())) { | |
result.appendCodePoint(c); | |
} | |
return result.toString(); | |
} | |
public static boolean isSpaceChar(int c) { | |
return c == 32 || c == 10 || c == 13 || c == 9 || c == -1; | |
} | |
public long[] nextLongArray(int n) { | |
long[] arr = new long[n]; | |
for (int i = 0; i < n; i++) { | |
arr[i] = nextLong(); | |
} | |
return arr; | |
} | |
} | |
static class ArrayUtils { | |
public static void reverse(long[] arr) { | |
for (int i = 0; i < arr.length / 2; i++) { | |
long temp = arr[i]; | |
arr[i] = arr[arr.length - i - 1]; | |
arr[arr.length - i - 1] = temp; | |
} | |
} | |
public static void sort(long[] arr) { | |
int n = arr.length; | |
Random r = new Random(); | |
for (int i = 0; i < n; i++) { | |
int p = r.nextInt(n + 1); | |
if (p < n) { | |
long temp = arr[i]; | |
arr[i] = arr[p]; | |
arr[p] = temp; | |
} | |
} | |
Arrays.sort(arr); | |
} | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment