import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
public class eks {
private static int skipWhitespace(final InputStream in) throws IOException {
int val = -1;
while ((val = in.read()) != -1) {
if (!Character.isWhitespace((char) val))
break;
}
return val;
}
private static int readInt(final InputStream in) {
final StringBuilder b = new StringBuilder();
try {
int val = skipWhitespace(in);
b.append((char) val);
while ((val = in.read()) != -1) {
if (Character.isWhitespace((char) val))
break;
b.append((char) val);
}
return Integer.parseInt(b.toString());
} catch (final IOException e) {
throw new RuntimeException(e);
}
}
public void run(final InputStream in, PrintStream out) {
int n = readInt(in);
int m = readInt(in);
int[] tl = new int[500];
int[] tni = new int[500000];
int cnt = 0;
for (int i = 0; i < n; i++) {
tl[i] = readInt(in);
for (int k = 0; k < tl[i]; k++) {
tni[cnt] = readInt(in);
cnt++;
}
}
int[] ts = new int[1000];
for (int i = 0; i < m; i++) {
int si = readInt(in);
ts[i] = si;
}
if (cnt < m) {
out.print(-1 + "\n");
return;
}
for (int i = 0; i < cnt; i++) {
if (tni[i] == ts[0]) {
boolean res = true;
int j;
for (j = 1; j < m; j++) {
if (tni[i + j] != ts[j]) {
res = false;
break;
}
}
if (res) {
int cpos = 0;
int pos = i + j - 1;
for (int k = 0; k < n; k++) {
cpos += tl[k];
if (cpos > pos) {
out.print((k + 2) + "\n");
return;
}
}
break;
}
}
}
out.print(-1 + "\n");
}
public static void main(final String[] args) {
new eks().run(System.in, System.out);
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | import java.io.IOException; import java.io.InputStream; import java.io.PrintStream; public class eks { private static int skipWhitespace(final InputStream in) throws IOException { int val = -1; while ((val = in.read()) != -1) { if (!Character.isWhitespace((char) val)) break; } return val; } private static int readInt(final InputStream in) { final StringBuilder b = new StringBuilder(); try { int val = skipWhitespace(in); b.append((char) val); while ((val = in.read()) != -1) { if (Character.isWhitespace((char) val)) break; b.append((char) val); } return Integer.parseInt(b.toString()); } catch (final IOException e) { throw new RuntimeException(e); } } public void run(final InputStream in, PrintStream out) { int n = readInt(in); int m = readInt(in); int[] tl = new int[500]; int[] tni = new int[500000]; int cnt = 0; for (int i = 0; i < n; i++) { tl[i] = readInt(in); for (int k = 0; k < tl[i]; k++) { tni[cnt] = readInt(in); cnt++; } } int[] ts = new int[1000]; for (int i = 0; i < m; i++) { int si = readInt(in); ts[i] = si; } if (cnt < m) { out.print(-1 + "\n"); return; } for (int i = 0; i < cnt; i++) { if (tni[i] == ts[0]) { boolean res = true; int j; for (j = 1; j < m; j++) { if (tni[i + j] != ts[j]) { res = false; break; } } if (res) { int cpos = 0; int pos = i + j - 1; for (int k = 0; k < n; k++) { cpos += tl[k]; if (cpos > pos) { out.print((k + 2) + "\n"); return; } } break; } } } out.print(-1 + "\n"); } public static void main(final String[] args) { new eks().run(System.in, System.out); } } |
English