Skip to content

Commit 68366f7

Browse files
committed
problem B codeforces contest 728 Div 2, O(NlogN) Time solution
1 parent 3baa006 commit 68366f7

File tree

1 file changed

+28
-8
lines changed
  • Codeforces/livecontest/Round728Div2

1 file changed

+28
-8
lines changed

β€ŽCodeforces/livecontest/Round728Div2/B.javaβ€Ž

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,29 +16,49 @@ public static void main(String[] args) {
1616
int t = sc.nextInt();
1717
for (int tt = 0; tt < t; tt++) {
1818
int n = sc.nextInt();
19-
int[] arr = sc.readArray(n);
20-
solveTask(arr);
19+
long[] arr = new long[n + 1];
20+
21+
// read array
22+
for (int i = 1; i < arr.length; i++) {
23+
arr[i] = sc.nextInt();
24+
}
25+
solveTask2(arr, n);
2126
}
2227

2328
out.close();
2429
}
2530

26-
private static void solveTask(int[] arr) {
31+
private static void solveTask2(long[] arr, int n) {
2732
int count = 0;
2833

29-
for (int i = 0; i < arr.length; i++) {
34+
for (int i = 1; i <= n; i++) {
3035

31-
for (int j = i + 1; j < arr.length; j++) {
36+
for (long j = arr[i] - i; j <= n; j += arr[i]) {
3237

33-
int ci = i + 1, cj = j + 1;
38+
if (j >= 0) {
3439

35-
if ((arr[i] * arr[j]) == (ci + cj))
36-
count++;
40+
if (arr[i] * arr[(int) j] == i + j && i < j)
41+
count++;
42+
}
3743
}
3844
}
3945
System.out.println(count);
4046
}
4147

48+
// this will get TLE
49+
/*
50+
* private static void solveTask(int[] arr) { int count = 0;
51+
*
52+
* for (int i = 0; i < arr.length; i++) {
53+
*
54+
* for (int j = i + 1; j < arr.length; j++) {
55+
*
56+
* int ci = i + 1, cj = j + 1;
57+
*
58+
* if ((arr[i] * arr[j]) == (ci + cj)) count++; } }
59+
* System.out.println(count); }
60+
*/
61+
4262
static class FastReader {
4363
BufferedReader br;
4464
StringTokenizer st;

0 commit comments

Comments
Β (0)