87 lines
2.1 KiB
Java
87 lines
2.1 KiB
Java
import java.io.*;
|
|
import java.util.*;
|
|
|
|
public class Main {
|
|
public static void main(String[] args) throws IOException {
|
|
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
|
|
|
|
String line1 = reader.readLine();
|
|
if (line1 == null)
|
|
return;
|
|
int n = Integer.parseInt(line1.trim());
|
|
|
|
long[] a = new long[n];
|
|
StringTokenizer stA = new StringTokenizer(reader.readLine());
|
|
for (int i = 0; i < n; i++) {
|
|
a[i] = Long.parseLong(stA.nextToken());
|
|
}
|
|
|
|
int[] types = new int[n];
|
|
int[] lens = new int[n];
|
|
int[] rewards = new int[n];
|
|
StringTokenizer stB = new StringTokenizer(reader.readLine());
|
|
for (int i = 0; i < n; i++) {
|
|
types[i] = Integer.parseInt(stB.nextToken());
|
|
if (types[i] == 1) {
|
|
lens[i] = 1;
|
|
rewards[i] = 1;
|
|
} else if (types[i] == 2) {
|
|
lens[i] = 2;
|
|
rewards[i] = 3;
|
|
} else {
|
|
lens[i] = 4;
|
|
rewards[i] = 5;
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < n - 1; i++) {
|
|
if (a[i] + lens[i] >= a[i + 1]) {
|
|
System.out.println(0);
|
|
return;
|
|
}
|
|
}
|
|
|
|
int m = Integer.parseInt(reader.readLine().trim());
|
|
long[] x = new long[m];
|
|
StringTokenizer stX = new StringTokenizer(reader.readLine());
|
|
for (int i = 0; i < m; i++) {
|
|
x[i] = Long.parseLong(stX.nextToken());
|
|
}
|
|
|
|
int[] y = new int[m];
|
|
StringTokenizer stY = new StringTokenizer(reader.readLine());
|
|
for (int i = 0; i < m; i++) {
|
|
y[i] = Integer.parseInt(stY.nextToken());
|
|
}
|
|
|
|
boolean[] overcome = new boolean[n];
|
|
int obsIdx = 0;
|
|
|
|
for (int j = 0; j < m; j++) {
|
|
long jumpStart = x[j];
|
|
long jumpEnd = x[j] + y[j];
|
|
|
|
while (obsIdx < n && a[obsIdx] < jumpStart) {
|
|
obsIdx++;
|
|
}
|
|
|
|
int tempIdx = obsIdx;
|
|
while (tempIdx < n && a[tempIdx] + lens[tempIdx] <= jumpEnd) {
|
|
overcome[tempIdx] = true;
|
|
tempIdx++;
|
|
}
|
|
}
|
|
|
|
long totalScore = 0;
|
|
for (int i = 0; i < n; i++) {
|
|
if (overcome[i]) {
|
|
totalScore += rewards[i];
|
|
} else {
|
|
totalScore -= 1;
|
|
}
|
|
}
|
|
|
|
System.out.println(Math.max(0, totalScore));
|
|
}
|
|
}
|