Tasks Details
easy
1.
Brackets
Determine whether a given string of parentheses (multiple types) is properly nested.
Task Score
100%
Correctness
100%
Performance
100%
A string S consisting of N characters is considered to be properly nested if any of the following conditions is true:
- S is empty;
- S has the form "(U)" or "[U]" or "{U}" where U is a properly nested string;
- S has the form "VW" where V and W are properly nested strings.
For example, the string "{[()()]}" is properly nested but "([)()]" is not.
Write a function:
class Solution { public int solution(string S); }
that, given a string S consisting of N characters, returns 1 if S is properly nested and 0 otherwise.
For example, given S = "{[()()]}", the function should return 1 and given S = "([)()]", the function should return 0, as explained above.
Write an efficient algorithm for the following assumptions:
- N is an integer within the range [0..200,000];
- string S is made only of the following characters: '(', '{', '[', ']', '}' and/or ')'.
Copyright 2009–2025 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.
Solution
Programming language used C#
Time spent on task 35 minutes
Notes
not defined yet
Code: 16:41:06 UTC,
vb,
verify,
result: Failed
' you can use Console.WriteLine for debugging purposes, e.g.
' Console.WriteLine("this is a debug message")
Private Function solution(S As String) As Integer
' write your code in VB.NET 4.0
Dim matched As New Dictionary()
matched.Add("]", "[")
matched.Add("}", "{")
matched.Add(")", "(")
Dim to_push As New List()
to_push.Add("[")
to_push.Add("{")
to_push.Add("(")
Dim stack As New Stack()
For Each c As Char In S
If to_push.Contains(c.ToString()) Then
stack.Push(c.ToString())
ElseIf stack.Count = 0 Then
Return 0
ElseIf Not stack.Pop().Equals(matched(c.ToString())) Then
Return 0
End If
Next
If stack.Count = 0 Then
Return 1
End If
Return 0
End Function
Analysis
Compile error
/tmp/user.vb (24,34) : error VBNC30451: 'Dictionary' is not declared. It may be inaccessible due to its protection level. /tmp/user.vb (29,27) : error VBNC30451: 'List' is not declared. It may be inaccessible due to its protection level. /tmp/user.vb (34,26) : error VBNC30451: 'Stack' is not declared. It may be inaccessible due to its protection level. There were 3 errors and 0 warnings.
Code: 16:41:39 UTC,
vb,
verify,
result: Failed
' you can use Console.WriteLine for debugging purposes, e.g.
' Console.WriteLine("this is a debug message")
Imports System.Collections
Imports System.Collections.Generic
Private Function solution(S As String) As Integer
' write your code in VB.NET 4.0
Dim matched As New Dictionary()
matched.Add("]", "[")
matched.Add("}", "{")
matched.Add(")", "(")
Dim to_push As New List()
to_push.Add("[")
to_push.Add("{")
to_push.Add("(")
Dim stack As New Stack()
For Each c As Char In S
If to_push.Contains(c.ToString()) Then
stack.Push(c.ToString())
ElseIf stack.Count = 0 Then
Return 0
ElseIf Not stack.Pop().Equals(matched(c.ToString())) Then
Return 0
End If
Next
If stack.Count = 0 Then
Return 1
End If
Return 0
End Function
Analysis
Compile error
/tmp/user.vb (29,34) : error VBNC30451: 'Dictionary' is not declared. It may be inaccessible due to its protection level. /tmp/user.vb (34,27) : error VBNC30451: 'List' is not declared. It may be inaccessible due to its protection level. There were 2 errors and 0 warnings.
Code: 16:54:24 UTC,
cs,
verify,
result: Failed
using System;
using System.Collections;
using System.Collections.Generic;
namespace Codility
{
class Program
{
public int solution(string S)
{
Dictionary matched = new Dictionary();
matched.Add("]", "[");
matched.Add("}", "{");
matched.Add(")", "(");
List to_push= new List();
to_push.Add("[");
to_push.Add("{");
to_push.Add("(");
Stack stack = new Stack();
foreach (char c in S)
{
if (to_push.Contains(c.ToString()))
stack.Push(c.ToString());
else
if (stack.Count == 0)
return 0;
else if (!stack.Pop().Equals(matched[c.ToString()]))
{
return 0;
}
}
if (stack.Count == 0)
return 1;
return 0;
}
}
}
Analysis
Compile error
Compilation failed: 1 error(s), 0 warnings user.cs(14,5): error CS0246: The type or namespace name `Solution' could not be found. Are you missing an assembly reference?
Code: 16:55:56 UTC,
cs,
verify,
result: Failed
using System;
using System.Collections;
using System.Collections.Generic;
class Solution {
public int solution(string S) {
// write your code in C# 6.0 with .NET 4.5 (Mono)
Dictionary matched = new Dictionary();
matched.Add("]", "[");
matched.Add("}", "{");
matched.Add(")", "(");
List to_push= new List();
to_push.Add("[");
to_push.Add("{");
to_push.Add("(");
Stack stack = new Stack();
foreach (char c in S)
{
if (to_push.Contains(c.ToString()))
stack.Push(c.ToString());
else
if (stack.Count == 0)
return 0;
else if (!stack.Pop().Equals(matched[c.ToString()]))
{
return 0;
}
}
if (stack.Count == 0)
return 1;
return 0;
}
}
Analysis
Compile error
Compilation failed: 10 error(s), 0 warnings Solution.cs(7,10): error CS0305: Using the generic type `System.Collections.Generic.Dictionary<TKey,TValue>' requires `2' type argument(s) /usr/share/codility-mono/lib/mono/4.5/mscorlib.dll (Location of the symbol related to previous error) Solution.cs(8,13): error CS0841: A local variable `matched' cannot be used before it is declared Solution.cs(9,13): error CS0841: A local variable `matched' cannot be used before it is declared Solution.cs(10,13): error CS0841: A local variable `matched' cannot be used before it is declared Solution.cs(12,13): error CS0305: Using the generic type `System.Collections.Generic.List<T>' requires `1' type argument(s) /usr/share/codility-mono/lib/mono/4.5/mscorlib.dll (Location of the symbol related to previous error) Solution.cs(13,13): error CS0841: A local variable `to_push' cannot be used before it is declared Solution.cs(14,13): error CS0841: A local variable `to_push' cannot be used before it is declared Solution.cs(15,13): error CS0841: A local variable `to_push' cannot be used before it is declared Solution.cs(21,21): error CS0841: A local variable `to_push' cannot be used before it is declared Solution.cs(26,50): error CS0841: A local variable `matched' cannot be used before it is declared
Code: 17:01:20 UTC,
vb,
verify,
result: Failed
' you can use Console.WriteLine for debugging purposes, e.g.
' Console.WriteLine("this is a debug message")
Imports System.Collections
Imports System.Collections.Generic
Private Function solution(S As String) As Integer
' write your code in VB.NET 4.0
Dim matched As New Dictionary(Of String, String)
matched.Add("]", "[")
matched.Add("}", "{")
matched.Add(")", "(")
Dim to_push As New List(Of String)
to_push.Add("[")
to_push.Add("{")
to_push.Add("(")
Dim stack As New Stack()
For Each c As Char In S
If to_push.Contains(c.ToString()) Then
stack.Push(c.ToString())
ElseIf stack.Count = 0 Then
Return 0
ElseIf Not stack.Pop().Equals(matched(c.ToString())) Then
Return 0
End If
Next
If stack.Count = 0 Then
Return 1
End If
Return 0
End Function
Analysis
Compile error
vbnc : Command line : error VBNC99999: Unexpected error: Object reference not set to an instance of an object at vbnc.TypeNameResolutionInfo.CheckImports (System.String R, vbnc.ImportsClauses Imports, Int32 TypeArgumentCount, System.Boolean& wasError) [0x002b4] in /tmp/mono-basic/vbnc/vbnc/source/Types/TypeNameResolutionInfo.vb:742 at vbnc.TypeNameResolutionInfo.ResolveUnqualifiedName (System.String[] Rs, Int32 TypeArgumentCount) [0x000ad] in /tmp/mono-basic/vbnc/vbnc/source/Types/TypeNameResolutionInfo.vb:852 at vbnc.TypeNameResolutionInfo.Resolve () [0x003db] in /tmp/mono-basic/vbnc/vbnc/source/Types/TypeNameResolutionInfo.vb:213 at vbnc.TypeNameResolutionInfo.Resolve () [0x001be] in /tmp/mono-basic/vbnc/vbnc/source/Types/TypeNameResolutionInfo.vb:188 at vbnc.ConstructedTypeName.ResolveTypeReferences () [0x00412] in /tmp/mono-basic/vbnc/vbnc/source/Types/ConstructedTypeName.vb:169 at vbnc.NonArrayTypeName.ResolveTypeReferences () [0x00081] in /tmp/mono-basic/vbnc/vbnc/source/Types/NonArrayTypeName.vb:136 at vbnc.TypeName.ResolveTypeReferences () [0x0005d] in /tmp/mono-basic/vbnc/vbnc/source/Types/TypeName.vb:157 at vbnc.VariableDeclaration.ResolveTypeReferences () [0x00096] in /tmp/mono-basic/vbnc/vbnc/source/Members/VariableDeclaration.vb:158 at vbnc.CodeBlock.ResolveTypeReferences () [0x00030] in /tmp/mono-basic/vbnc/vbnc/source/Code/CodeBlock.vb:548 at vbnc.MethodBaseDeclaration.ResolveTypeReferences () [0x0008f] in /tmp/mono-basic/vbnc/vbnc/source/General/MethodBaseDeclaration.vb:304 at vbnc.MethodDeclaration.ResolveTypeReferences () [0x00006] in /tmp/mono-basic/vbnc/vbnc/source/Members/MethodDeclaration.vb:42 at vbnc.SubDeclaration.ResolveTypeReferences () [0x00047] in /tmp/mono-basic/vbnc/vbnc/source/Members/SubDeclaration.vb:108 at vbnc.AssemblyDeclaration.ResolveTypeReferences (vbnc.TypeDeclaration Type) [0x000c3] in /tmp/mono-basic/vbnc/vbnc/source/TypeDeclarations/AssemblyDeclaration.vb:239 at vbnc.AssemblyDeclaration.ResolveTypeReferences () [0x0003b] in /tmp
Code: 17:02:20 UTC,
vb,
verify,
result: Failed
' you can use Console.WriteLine for debugging purposes, e.g.
' Console.WriteLine("this is a debug message")
Imports System
Imports System.Collections.Generic
Private Function solution(S As String) As Integer
' write your code in VB.NET 4.0
Dim matched As New Dictionary(Of String, String)
matched.Add("]", "[")
matched.Add("}", "{")
matched.Add(")", "(")
Dim to_push As New List(Of String)
to_push.Add("[")
to_push.Add("{")
to_push.Add("(")
Dim stack As New Stack()
For Each c As Char In S
If to_push.Contains(c.ToString()) Then
stack.Push(c.ToString())
ElseIf stack.Count = 0 Then
Return 0
ElseIf Not stack.Pop().Equals(matched(c.ToString())) Then
Return 0
End If
Next
If stack.Count = 0 Then
Return 1
End If
Return 0
End Function
Analysis
Compile error
vbnc : Command line : error VBNC99999: Unexpected error: Object reference not set to an instance of an object at vbnc.TypeNameResolutionInfo.CheckImports (System.String R, vbnc.ImportsClauses Imports, Int32 TypeArgumentCount, System.Boolean& wasError) [0x002b4] in /tmp/mono-basic/vbnc/vbnc/source/Types/TypeNameResolutionInfo.vb:742 at vbnc.TypeNameResolutionInfo.ResolveUnqualifiedName (System.String[] Rs, Int32 TypeArgumentCount) [0x000ad] in /tmp/mono-basic/vbnc/vbnc/source/Types/TypeNameResolutionInfo.vb:852 at vbnc.TypeNameResolutionInfo.Resolve () [0x003db] in /tmp/mono-basic/vbnc/vbnc/source/Types/TypeNameResolutionInfo.vb:213 at vbnc.TypeNameResolutionInfo.Resolve () [0x001be] in /tmp/mono-basic/vbnc/vbnc/source/Types/TypeNameResolutionInfo.vb:188 at vbnc.ConstructedTypeName.ResolveTypeReferences () [0x00412] in /tmp/mono-basic/vbnc/vbnc/source/Types/ConstructedTypeName.vb:169 at vbnc.NonArrayTypeName.ResolveTypeReferences () [0x00081] in /tmp/mono-basic/vbnc/vbnc/source/Types/NonArrayTypeName.vb:136 at vbnc.TypeName.ResolveTypeReferences () [0x0005d] in /tmp/mono-basic/vbnc/vbnc/source/Types/TypeName.vb:157 at vbnc.VariableDeclaration.ResolveTypeReferences () [0x00096] in /tmp/mono-basic/vbnc/vbnc/source/Members/VariableDeclaration.vb:158 at vbnc.CodeBlock.ResolveTypeReferences () [0x00030] in /tmp/mono-basic/vbnc/vbnc/source/Code/CodeBlock.vb:548 at vbnc.MethodBaseDeclaration.ResolveTypeReferences () [0x0008f] in /tmp/mono-basic/vbnc/vbnc/source/General/MethodBaseDeclaration.vb:304 at vbnc.MethodDeclaration.ResolveTypeReferences () [0x00006] in /tmp/mono-basic/vbnc/vbnc/source/Members/MethodDeclaration.vb:42 at vbnc.SubDeclaration.ResolveTypeReferences () [0x00047] in /tmp/mono-basic/vbnc/vbnc/source/Members/SubDeclaration.vb:108 at vbnc.AssemblyDeclaration.ResolveTypeReferences (vbnc.TypeDeclaration Type) [0x000c3] in /tmp/mono-basic/vbnc/vbnc/source/TypeDeclarations/AssemblyDeclaration.vb:239 at vbnc.AssemblyDeclaration.ResolveTypeReferences () [0x0003b] in /tmp
Code: 17:05:15 UTC,
py,
verify,
result: Passed
# you can use print for debugging purposes, e.g.
# print "this is a debug message"
def solution(S):
# write your code in Python 2.7
matched = {"]":"[", "}":"{", ")": "("}
to_push = ["[", "{", "("]
stack = []
for element in S:
if element in to_push:
stack.append(element)
else:
if len(stack) == 0:
return 0
elif matched[element] != stack.pop():
return 0
if len(stack) == 0:
return 1
else:
return 0
pass
Analysis
Code: 17:07:27 UTC,
cs,
verify,
result: Failed
using System;
using System.Collections;
using System.Collections.Generic;
class Solution {
public int solution(string S) {
// write your code in C# 6.0 with .NET 4.5 (Mono)
Dictionary matched = new Dictionary();
matched.Add("]", "[");
matched.Add("}", "{");
matched.Add(")", "(");
List pushElement = new List();
pushElement.Add("[");
pushElement.Add("{");
pushElement.Add("(");
Stack stack = new Stack();
foreach (char c in S)
{
if (pushElement.Contains(c.ToString()))
stack.Push(c.ToString());
else
if (stack.Count == 0)
return 0;
else if (!stack.Pop().Equals(matched[c.ToString()]))
{
return 0;
}
}
if (stack.Count == 0)
return 1;
return 0;
}
}
Analysis
Compile error
Compilation failed: 10 error(s), 0 warnings Solution.cs(7,10): error CS0305: Using the generic type `System.Collections.Generic.Dictionary<TKey,TValue>' requires `2' type argument(s) /usr/share/codility-mono/lib/mono/4.5/mscorlib.dll (Location of the symbol related to previous error) Solution.cs(8,13): error CS0841: A local variable `matched' cannot be used before it is declared Solution.cs(9,13): error CS0841: A local variable `matched' cannot be used before it is declared Solution.cs(10,13): error CS0841: A local variable `matched' cannot be used before it is declared Solution.cs(12,13): error CS0305: Using the generic type `System.Collections.Generic.List<T>' requires `1' type argument(s) /usr/share/codility-mono/lib/mono/4.5/mscorlib.dll (Location of the symbol related to previous error) Solution.cs(13,13): error CS0841: A local variable `pushElement' cannot be used before it is declared Solution.cs(14,13): error CS0841: A local variable `pushElement' cannot be used before it is declared Solution.cs(15,13): error CS0841: A local variable `pushElement' cannot be used before it is declared Solution.cs(21,21): error CS0841: A local variable `pushElement' cannot be used before it is declared Solution.cs(26,50): error CS0841: A local variable `matched' cannot be used before it is declared
Code: 17:08:03 UTC,
cs,
verify,
result: Failed
using System;
using System.Collections;
using System.Collections.Generic;
class Solution {
public int solution(string S) {
// write your code in C# 6.0 with .NET 4.5 (Mono)
Dictionary matched = new Dictionary(Of String, String);
matched.Add("]", "[");
matched.Add("}", "{");
matched.Add(")", "(");
List pushElement = new List();
pushElement.Add("[");
pushElement.Add("{");
pushElement.Add("(");
Stack stack = new Stack();
foreach (char c in S)
{
if (pushElement.Contains(c.ToString()))
stack.Push(c.ToString());
else
if (stack.Count == 0)
return 0;
else if (!stack.Pop().Equals(matched[c.ToString()]))
{
return 0;
}
}
if (stack.Count == 0)
return 1;
return 0;
}
}
Analysis
Compile error
Compilation failed: 2 error(s), 0 warnings Solution.cs(7,48): error CS1525: Unexpected symbol `String' Solution.cs(7,62): error CS1525: Unexpected symbol `)'
Code: 17:10:04 UTC,
cs,
verify,
result: Failed
using System;
using System.Collections;
using System.Collections.Generic;
class Solution {
public int solution(string S) {
// write your code in C# 6.0 with .NET 4.5 (Mono)
Dictionary matched = new Dictionary<string, string>();
matched.Add("]", "[");
matched.Add("}", "{");
matched.Add(")", "(");
List pushElement = new List();
pushElement.Add("[");
pushElement.Add("{");
pushElement.Add("(");
Stack stack = new Stack();
foreach (char c in S)
{
if (pushElement.Contains(c.ToString()))
stack.Push(c.ToString());
else
if (stack.Count == 0)
return 0;
else if (!stack.Pop().Equals(matched[c.ToString()]))
{
return 0;
}
}
if (stack.Count == 0)
return 1;
return 0;
}
}
Analysis
Compile error
Compilation failed: 10 error(s), 0 warnings Solution.cs(7,10): error CS0305: Using the generic type `System.Collections.Generic.Dictionary<TKey,TValue>' requires `2' type argument(s) /usr/share/codility-mono/lib/mono/4.5/mscorlib.dll (Location of the symbol related to previous error) Solution.cs(8,13): error CS0841: A local variable `matched' cannot be used before it is declared Solution.cs(9,13): error CS0841: A local variable `matched' cannot be used before it is declared Solution.cs(10,13): error CS0841: A local variable `matched' cannot be used before it is declared Solution.cs(12,13): error CS0305: Using the generic type `System.Collections.Generic.List<T>' requires `1' type argument(s) /usr/share/codility-mono/lib/mono/4.5/mscorlib.dll (Location of the symbol related to previous error) Solution.cs(13,13): error CS0841: A local variable `pushElement' cannot be used before it is declared Solution.cs(14,13): error CS0841: A local variable `pushElement' cannot be used before it is declared Solution.cs(15,13): error CS0841: A local variable `pushElement' cannot be used before it is declared Solution.cs(21,21): error CS0841: A local variable `pushElement' cannot be used before it is declared Solution.cs(26,50): error CS0841: A local variable `matched' cannot be used before it is declared
Code: 17:10:51 UTC,
cs,
verify,
result: Failed
using System;
using System.Collections;
using System.Collections.Generic;
class Solution {
public int solution(string S) {
// write your code in C# 6.0 with .NET 4.5 (Mono)
Dictionary<string, string> matched = new Dictionary<string, string>();
matched.Add("]", "[");
matched.Add("}", "{");
matched.Add(")", "(");
List pushElement = new List();
pushElement.Add("[");
pushElement.Add("{");
pushElement.Add("(");
Stack stack = new Stack();
foreach (char c in S)
{
if (pushElement.Contains(c.ToString()))
stack.Push(c.ToString());
else
if (stack.Count == 0)
return 0;
else if (!stack.Pop().Equals(matched[c.ToString()]))
{
return 0;
}
}
if (stack.Count == 0)
return 1;
return 0;
}
}
Analysis
Compile error
Compilation failed: 5 error(s), 0 warnings Solution.cs(12,13): error CS0305: Using the generic type `System.Collections.Generic.List<T>' requires `1' type argument(s) /usr/share/codility-mono/lib/mono/4.5/mscorlib.dll (Location of the symbol related to previous error) Solution.cs(13,13): error CS0841: A local variable `pushElement' cannot be used before it is declared Solution.cs(14,13): error CS0841: A local variable `pushElement' cannot be used before it is declared Solution.cs(15,13): error CS0841: A local variable `pushElement' cannot be used before it is declared Solution.cs(21,21): error CS0841: A local variable `pushElement' cannot be used before it is declared
Code: 17:14:34 UTC,
cs,
verify,
result: Passed
using System;
using System.Collections;
using System.Collections.Generic;
class Solution {
public int solution(string S) {
// write your code in C# 6.0 with .NET 4.5 (Mono)
Dictionary<string, string> matched = new Dictionary<string, string>();
matched.Add("]", "[");
matched.Add("}", "{");
matched.Add(")", "(");
List<string> pushElement = new List<string>();
pushElement.Add("[");
pushElement.Add("{");
pushElement.Add("(");
Stack stack = new Stack();
foreach (char c in S)
{
if (pushElement.Contains(c.ToString()))
stack.Push(c.ToString());
else
if (stack.Count == 0)
return 0;
else if (!stack.Pop().Equals(matched[c.ToString()]))
{
return 0;
}
}
if (stack.Count == 0)
return 1;
return 0;
}
}
Analysis
Code: 17:15:16 UTC,
cs,
verify,
result: Passed
using System;
using System.Collections;
using System.Collections.Generic;
class Solution {
public int solution(string S) {
// write your code in C# 6.0 with .NET 4.5 (Mono)
Dictionary<string, string> matched = new Dictionary<string, string>();
matched.Add("]", "[");
matched.Add("}", "{");
matched.Add(")", "(");
List<string> pushElement = new List<string>();
pushElement.Add("[");
pushElement.Add("{");
pushElement.Add("(");
Stack stack = new Stack();
foreach (char c in S)
{
if (pushElement.Contains(c.ToString()))
stack.Push(c.ToString());
else
if (stack.Count == 0)
return 0;
else if (!stack.Pop().Equals(matched[c.ToString()]))
{
return 0;
}
}
if (stack.Count == 0)
return 1;
return 0;
}
}
Analysis
Code: 17:15:18 UTC,
cs,
final,
score: 
100
using System;
using System.Collections;
using System.Collections.Generic;
class Solution {
public int solution(string S) {
// write your code in C# 6.0 with .NET 4.5 (Mono)
Dictionary<string, string> matched = new Dictionary<string, string>();
matched.Add("]", "[");
matched.Add("}", "{");
matched.Add(")", "(");
List<string> pushElement = new List<string>();
pushElement.Add("[");
pushElement.Add("{");
pushElement.Add("(");
Stack stack = new Stack();
foreach (char c in S)
{
if (pushElement.Contains(c.ToString()))
stack.Push(c.ToString());
else
if (stack.Count == 0)
return 0;
else if (!stack.Pop().Equals(matched[c.ToString()]))
{
return 0;
}
}
if (stack.Count == 0)
return 1;
return 0;
}
}
Analysis summary
The solution obtained perfect score.
Analysis
Detected time complexity:
O(N)
expand all
Correctness tests
1.
0.065 s
OK
2.
0.063 s
OK
3.
0.063 s
OK
4.
0.065 s
OK
5.
0.064 s
OK
1.
0.064 s
OK
1.
0.064 s
OK
2.
0.064 s
OK
3.
0.064 s
OK
4.
0.064 s
OK
5.
0.065 s
OK
expand all
Performance tests
1.
0.126 s
OK
2.
0.064 s
OK
3.
0.069 s
OK
1.
0.071 s
OK
2.
0.063 s
OK
3.
0.064 s
OK
1.
0.110 s
OK
multiple_full_binary_trees
sequence of full trees of the form T=(TT), depths [1..10..1], with/without some brackets at the end, length=49K+
sequence of full trees of the form T=(TT), depths [1..10..1], with/without some brackets at the end, length=49K+
✔
OK
1.
0.076 s
OK
2.
0.076 s
OK
3.
0.076 s
OK
4.
0.080 s
OK
5.
0.066 s
OK
broad_tree_with_deep_paths
string of the form [TTT...T] of 300 T's, each T being '{{{...}}}' nested 200-fold, length=120K+
string of the form [TTT...T] of 300 T's, each T being '{{{...}}}' nested 200-fold, length=120K+
✔
OK
1.
0.097 s
OK
2.
0.095 s
OK