/ SeriousOJ /

Record Detail

Compile Error

foo.cc:7:23: error: stray '#' in program
    7 |             continue  # No operations needed, this element is already valid
      |                       ^
foo.cc:8:11: error: invalid preprocessing directive #If; did you mean #if?
    8 |         # If gcd(A[i], X) is not valid, check how many increments are needed
      |           ^~
      |           if
foo.cc:10:55: error: stray '#' in program
   10 |         total_operations += diff if diff != X else 0  # Only add the remainder to make it divisible
      |                                                       ^
foo.cc:14:7: error: invalid preprocessing directive #Read
   14 |     # Read the number of test cases
      |       ^~~~
foo.cc:18:11: error: invalid preprocessing directive #Read
   18 |         # Read the test case input values
      |           ^~~~
foo.cc:22:11: error: invalid preprocessing directive #Split
   22 |         # Split the array into two halves
      |           ^~~~~
foo.cc:25:11: error: invalid preprocessing directive #First
   25 |         # First half should be (X+1)-ordinary
      |           ^~~~~
foo.cc:27:11: error: invalid preprocessing directive #Second
   27 |         # Second half should be X-ordinary
      |           ^~~~~~
foo.cc:30:11: error: invalid preprocessing directive #Check
   30 |         # Check if we can make the first half (X+1)-ordinary
      |           ^~~~~
foo.cc:33:11: error: invalid preprocessing directive #Check
   33 |         # Check if we can make the second half X-ordinary
      |           ^~~~~
foo.cc:36:11: error: invalid preprocessing directive #If; did you mean #if?
   36 |         # If we can make both halves ordinary, return the total number of operations
      |           ^~
      |           if
foo.cc:1:1: error: 'import' does not name a type
    1 | import math
      | ^~~~~~
foo.cc:1:1: note: C++20 'import' only available with '-fmodules-ts'

Code

import math

def min_operations_to_make_gcd(A, X, N):
    total_operations = 0
    for i in range(N):
        if math.gcd(A[i], X) > 1:
            continue  # No operations needed, this element is already valid
        # If gcd(A[i], X) is not valid, check how many increments are needed
        diff = X - A[i] % X
        total_operations += diff if diff != X else 0  # Only add the remainder to make it divisible
    return total_operations

def solve():
    # Read the number of test cases
    T = int(input())
    
    for _ in range(T):
        # Read the test case input values
        N, X = map(int, input().split())
        A = list(map(int, input().split()))
        
        # Split the array into two halves
        half_size = N // 2
        
        # First half should be (X+1)-ordinary
        first_half = A[:half_size]
        # Second half should be X-ordinary
        second_half = A[half_size:]
        
        # Check if we can make the first half (X+1)-ordinary
        first_half_operations = min_operations_to_make_gcd(first_half, X + 1, half_size)
        
        # Check if we can make the second half X-ordinary
        second_half_operations = min_operations_to_make_gcd(second_half, X, N - half_size)
        
        # If we can make both halves ordinary, return the total number of operations
        if first_half_operations != -1 and second_half_operations != -1:
            print(first_half_operations + second_half_operations)
        else:
            print(-1)

Information

Submit By
Type
Submission
Problem
P1168 F. x ordinary array
Language
C++17 (G++ 13.2.0)
Submit At
2025-06-11 21:23:35
Judged At
2025-06-11 21:23:35
Judged By
Score
0
Total Time
0ms
Peak Memory
0 Bytes