Count friend requests based on age rules
Company: Bloomberg
Role: Software Engineer
Category: Coding & Algorithms
Difficulty: medium
Interview Round: Technical Screen
## Problem
You are given an array `ages`, where `ages[i]` is the age of the `i`-th person. A person of age **A** will send a **friend request** to a person of age **B** if all conditions hold:
1. \(B > 0.5 \times A + 7\)
2. \(B \le A\)
Each request is **directed** (A→B). A person cannot send a request to themselves.
Return the **total number of friend requests** that will be sent.
## Input
- `ages`: integer array
## Output
- An integer: total number of directed friend requests.
## Constraints (you may assume typical interview bounds)
- \(1 \le n \le 2\times 10^4\)
- \(1 \le ages[i] \le 120\)
## Examples
1) `ages = [16, 16]`
- Each 16-year-old can request the other (since \(16 > 0.5\cdot16 + 7 = 15\) and \(16 \le 16\))
- Total = 2
2) `ages = [20, 30, 100, 110, 120]`
- Compute total directed requests that satisfy the rules.
Overview: This question evaluates algorithmic problem-solving skills involving array processing, counting and combinatorics under conditional constraints and frequency handling.
Read the full Bloomberg Software Engineer interview experience this question came from
Count ordered friend requests between people using the standard age rules.
Constraints
- Inputs are provided as Python literals compatible with the function signature.
- Return a deterministic value exactly matching the requested output.
Examples
Input: ([16, 16],)
Expected Output: 2
Explanation: Two reciprocal requests.
Input: ([16, 17, 18],)
Expected Output: 2
Explanation: Mixed ages.
Hints
- Start with a direct data structure representation.
- Handle edge cases before the main loop.