Tasks Details
easy
1.
Triangle
Determine whether a triangle can be built from a given set of edges.
Task Score
68%
Correctness
90%
Performance
33%
An array A consisting of N integers is given. A triplet (P, Q, R) is triangular if 0 ≤ P < Q < R < N and:
- A[P] + A[Q] > A[R],
- A[Q] + A[R] > A[P],
- A[R] + A[P] > A[Q].
For example, consider array A such that:
A[0] = 10 A[1] = 2 A[2] = 5 A[3] = 1 A[4] = 8 A[5] = 20Triplet (0, 2, 4) is triangular.
Write a function:
class Solution { public int solution(int[] A); }
that, given an array A consisting of N integers, returns 1 if there exists a triangular triplet for this array and returns 0 otherwise.
For example, given array A such that:
A[0] = 10 A[1] = 2 A[2] = 5 A[3] = 1 A[4] = 8 A[5] = 20the function should return 1, as explained above. Given array A such that:
A[0] = 10 A[1] = 50 A[2] = 5 A[3] = 1the function should return 0.
Write an efficient algorithm for the following assumptions:
- N is an integer within the range [0..100,000];
- each element of array A is an integer within the range [−2,147,483,648..2,147,483,647].
Copyright 2009–2025 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.
Solution
Programming language used Java 21
Time spent on task 23 minutes
Notes
not defined yet
Code: 10:43:03 UTC,
java,
autosave
Code: 10:58:52 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
if (A.length < 3) {
return 0;
}
for (int p=0; p<A.length; p++) {
int q = p + 1;
int r = q + 1;
while(r < A.length) {
if (A[p] < A[q]+A[r]) {
return 1;
} else {
r++;
}
}
}
return 0;
}
}
Code: 10:59:23 UTC,
java,
verify,
result: Failed
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
if (A.length < 3) {
return 0;
}
for (int p=0; p<A.length; p++) {
int q = p + 1;
int r = q + 1;
while(r < A.length) {
if (A[p] < A[q]+A[r]) {
return 1;
} else {
r++;
}
}
}
return 0;
}
}
User test case 1:
[]
User test case 2:
[1, 2, 5, 9, 8, 463, 21, 2]
User test case 3:
[10, 1, 0, 10, 20, 30, 5, 1, 2]
Analysis
expand all
User tests
1.
0.004 s
OK
function result: 0
function result: 0
1.
0.004 s
OK
function result: 1
function result: 1
1.
0.004 s
OK
function result: 1
function result: 1
Code: 11:01:15 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
if (A.length < 3) {
return 0;
}
for (int p=0; p<A.length; p++) {
int q = p + 1;
int r = q + 1;
while(r < A.length) {
if (A[p] < A[q]+A[r] && A[p]+A[q] > A[r] && A[r]+A[p] > A[q]) {
return 1;
} else {
r++;
}
}
}
return 0;
}
}
Code: 11:01:17 UTC,
java,
verify,
result: Failed
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
if (A.length < 3) {
return 0;
}
for (int p=0; p<A.length; p++) {
int q = p + 1;
int r = q + 1;
while(r < A.length) {
if (A[p] < A[q]+A[r] && A[p]+A[q] > A[r] && A[r]+A[p] > A[q]) {
return 1;
} else {
r++;
}
}
}
return 0;
}
}
User test case 1:
[]
User test case 2:
[1, 2, 5, 9, 8, 463, 21, 2]
User test case 3:
[10, 1, 0, 10, 20, 30, 5, 1, 2]
Analysis
expand all
User tests
1.
0.004 s
OK
function result: 0
function result: 0
1.
0.004 s
OK
function result: 1
function result: 1
1.
0.004 s
OK
function result: 1
function result: 1
Code: 11:05:18 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
if (A.length < 3) {
return 0;
}
for (int p=0; p<A.length; p++) {
int q = p + 1;
while(q < A.length) {
int r = q + 1;
while (r < A.length) {
if (A[p] < A[q]+A[r] && A[p]+A[q] > A[r] && A[r]+A[p] > A[q]) {
return 1;
}
r++;
}
q++;
}
}
return 0;
}
}
Code: 11:05:19 UTC,
java,
verify,
result: Passed
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
if (A.length < 3) {
return 0;
}
for (int p=0; p<A.length; p++) {
int q = p + 1;
while(q < A.length) {
int r = q + 1;
while (r < A.length) {
if (A[p] < A[q]+A[r] && A[p]+A[q] > A[r] && A[r]+A[p] > A[q]) {
return 1;
}
r++;
}
q++;
}
}
return 0;
}
}
User test case 1:
[]
User test case 2:
[1, 2, 5, 9, 8, 463, 21, 2]
User test case 3:
[10, 1, 0, 10, 20, 30, 5, 1, 2]
Analysis
expand all
User tests
1.
0.004 s
OK
function result: 0
function result: 0
1.
0.004 s
OK
function result: 1
function result: 1
1.
0.004 s
OK
function result: 1
function result: 1
Code: 11:05:28 UTC,
java,
verify,
result: Passed
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
if (A.length < 3) {
return 0;
}
for (int p=0; p<A.length; p++) {
int q = p + 1;
while(q < A.length) {
int r = q + 1;
while (r < A.length) {
if (A[p] < A[q]+A[r] && A[p]+A[q] > A[r] && A[r]+A[p] > A[q]) {
return 1;
}
r++;
}
q++;
}
}
return 0;
}
}
User test case 1:
[]
User test case 2:
[1, 2, 5, 9, 8, 463, 21, 2]
User test case 3:
[10, 1, 0, 10, 20, 30, 5, 1, 2]
Analysis
expand all
User tests
1.
0.004 s
OK
function result: 0
function result: 0
1.
0.004 s
OK
function result: 1
function result: 1
1.
0.004 s
OK
function result: 1
function result: 1
Code: 11:05:33 UTC,
java,
final,
score: 
68
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
if (A.length < 3) {
return 0;
}
for (int p=0; p<A.length; p++) {
int q = p + 1;
while(q < A.length) {
int r = q + 1;
while (r < A.length) {
if (A[p] < A[q]+A[r] && A[p]+A[q] > A[r] && A[r]+A[p] > A[q]) {
return 1;
}
r++;
}
q++;
}
}
return 0;
}
}
Analysis summary
The following issues have been detected: wrong answers, timeout errors.
Analysis
Detected time complexity:
O(N**3)
expand all
Correctness tests
1.
0.004 s
OK
2.
0.004 s
OK
3.
0.004 s
OK
4.
0.004 s
OK
5.
0.004 s
OK
6.
0.004 s
OK
1.
0.004 s
OK
2.
0.004 s
OK
3.
0.004 s
OK
4.
0.004 s
OK
5.
0.004 s
OK
6.
0.004 s
OK
1.
0.004 s
OK
2.
0.004 s
OK
3.
0.004 s
OK
4.
0.004 s
OK
5.
0.004 s
OK
6.
0.004 s
OK
1.
0.004 s
OK
2.
0.004 s
OK
3.
0.004 s
OK
4.
0.004 s
OK
5.
0.004 s
OK
6.
0.004 s
OK
1.
0.004 s
WRONG ANSWER,
got 0 expected 1
2.
0.004 s
OK
3.
0.004 s
OK
4.
0.004 s
OK
5.
0.004 s
OK
6.
0.004 s
OK
1.
0.004 s
OK
2.
0.004 s
OK
3.
0.004 s
OK
4.
0.004 s
OK
5.
0.004 s
OK
6.
0.004 s
OK
1.
0.004 s
OK
2.
0.004 s
OK
3.
0.004 s
OK
4.
0.004 s
OK
5.
0.004 s
OK
6.
0.004 s
OK
1.
0.004 s
OK
2.
0.004 s
OK
3.
0.004 s
OK
4.
0.004 s
OK
5.
0.004 s
OK
6.
0.004 s
OK
1.
0.004 s
OK
2.
0.004 s
OK
3.
0.008 s
OK
4.
0.004 s
OK
5.
0.004 s
OK
6.
0.004 s
OK
1.
0.008 s
OK
2.
0.004 s
OK
3.
0.004 s
OK
4.
0.004 s
OK
5.
0.004 s
OK
6.
0.004 s
OK
expand all
Performance tests
1.
0.028 s
OK
2.
0.004 s
OK
3.
0.004 s
OK
4.
0.004 s
OK
5.
0.004 s
OK
6.
0.004 s
OK
large2
1 followed by an ascending sequence of ~50K elements from [0..100K], length=~50K
1 followed by an ascending sequence of ~50K elements from [0..100K], length=~50K
✘
TIMEOUT ERROR
Killed. Hard limit reached: 6.000 sec.
Killed. Hard limit reached: 6.000 sec.
1.
6.000 s
TIMEOUT ERROR,
Killed. Hard limit reached: 6.000 sec.
2.
0.004 s
OK
3.
0.004 s
OK
4.
0.004 s
OK
5.
0.004 s
OK
6.
0.008 s
OK
1.
0.240 s
OK
2.
0.004 s
OK
3.
0.004 s
OK
4.
0.004 s
OK
5.
0.004 s
OK
6.
0.004 s
OK
large_negative
chaotic sequence of negative values from [-1M..-1], length=100K
chaotic sequence of negative values from [-1M..-1], length=100K
✘
TIMEOUT ERROR
Killed. Hard limit reached: 7.000 sec.
Killed. Hard limit reached: 7.000 sec.
1.
7.000 s
TIMEOUT ERROR,
Killed. Hard limit reached: 7.000 sec.
2.
0.004 s
OK
3.
0.004 s
OK
4.
0.004 s
OK
5.
0.004 s
OK
6.
0.004 s
OK
large_negative2
chaotic sequence of negative values from [-10..-1], length=100K
chaotic sequence of negative values from [-10..-1], length=100K
✘
TIMEOUT ERROR
Killed. Hard limit reached: 6.000 sec.
Killed. Hard limit reached: 6.000 sec.
1.
6.000 s
TIMEOUT ERROR,
Killed. Hard limit reached: 6.000 sec.
2.
0.004 s
OK
3.
0.004 s
OK
4.
0.004 s
OK
5.
0.004 s
OK
6.
0.004 s
OK
large_negative3
sequence of -1 value, length=100K
sequence of -1 value, length=100K
✘
TIMEOUT ERROR
Killed. Hard limit reached: 6.000 sec.
Killed. Hard limit reached: 6.000 sec.
1.
6.000 s
TIMEOUT ERROR,
Killed. Hard limit reached: 6.000 sec.
2.
0.004 s
OK
3.
0.004 s
OK
4.
0.004 s
OK
5.
0.004 s
OK
6.
0.004 s
OK