Fraudulent Activity Notifications

  • + 0 comments

    This code is failing at two test cases, can anyone please help me find my mistake...

    import math import os import random import re import sys

    #

    Complete the 'activityNotifications' function below.

    #

    The function is expected to return an INTEGER.

    The function accepts following parameters:

    1. INTEGER_ARRAY expenditure

    2. INTEGER d

    # def constant_time_median(frequency_dict): total_count = sum(frequency_dict.values()) sorted_numbers = sorted(frequency_dict.keys())

    cumulative_count = 0
    for number in sorted_numbers:
        cumulative_count += frequency_dict[number]
        if cumulative_count > total_count // 2:
            if total_count % 2 == 1:
                return number
        if cumulative_count >= total_count // 2:
    
            if total_count % 2 == 0:
    
    
    
                # If total count is even, find the next number to get the average
                next_number_index = sorted_numbers.index(next(num for num in sorted_numbers if num > number and frequency_dict[num] > 0))
                next_number = sorted_numbers[next_number_index]
                return (number + next_number) / 2
    

    def activityNotifications(expenditure, d):

    freq_dict = {}
    
    for i in range(201):
        freq_dict[i] = 0
    
    for i in range(d):
        freq_dict[expenditure[i]] +=1
    # print(freq_dict)
    
    count = 0
    print(constant_time_median(freq_dict), count)
    if expenditure[d] >= 2*constant_time_median(freq_dict):
    
        count+=1
    
    for i in range(1+d,len(expenditure)):
    
        freq_dict[expenditure[i-d-1]] -=1
        freq_dict[expenditure[i-1]] +=1
        print(constant_time_median(freq_dict), count)
        if 2*constant_time_median(freq_dict) <= expenditure[i]:
            count+=1
    return count
    

    if name == 'main': fptr = open(os.environ['OUTPUT_PATH'], 'w')

    first_multiple_input = input().rstrip().split()
    
    n = int(first_multiple_input[0])
    
    d = int(first_multiple_input[1])
    
    expenditure = list(map(int, input().rstrip().split()))
    
    result = activityNotifications(expenditure, d)
    
    fptr.write(str(result) + '\n')
    
    fptr.close()