# uynilo9/cpcpp architecture

> Architecture diagram of the GitHub repository uynilo9/cpcpp, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/uynilo9/cpcpp
- Repository: https://github.com/uynilo9/cpcpp

## Overview

Cpcpp is an archive of independent C++ competitive-programming solutions, not a single application. A user or judge supplies a problem-specific input (or invokes a LeetCode method); each solution computes and returns or prints its answer independently. The sampled files show this standalone pattern, while the README and tree establish the platform collections. No shared runtime orchestration or common data store is evident.

Main entry points: [`atcoder/atcoder_abc096_c.cpp`](https://github.com/uynilo9/cpcpp/blob/main/atcoder/atcoder_abc096_c.cpp) (Grid check), [`atcoder/atcoder_abc247_d.cpp`](https://github.com/uynilo9/cpcpp/blob/main/atcoder/atcoder_abc247_d.cpp) (Queue queries), [`atcoder/atcoder_abc283_d.cpp`](https://github.com/uynilo9/cpcpp/blob/main/atcoder/atcoder_abc283_d.cpp) (Scope check), [`kattis/kattis_averageshard.cpp`](https://github.com/uynilo9/cpcpp/blob/main/kattis/kattis_averageshard.cpp) (Average split)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_atcoder["AtCoder"]
  node_abc096["Grid check"]
  node_abc247["Queue queries"]
  node_abc283["Scope check"]
end

subgraph group_kattis["Kattis"]
  node_average["Average split"]
  node_keyboard["Keyboard editor"]
end

subgraph group_leetcode["LeetCode"]
  node_roman["Roman conversion<br/>[leetcode_13.cpp]"]
  node_substring["Substring length<br/>[leetcode_3.cpp]"]
end

subgraph group_ntoj["NTOJ"]
  node_attack["Grid attack<br/>[ntoj_1077.cpp]"]
  node_damage["Range damage<br/>[ntoj_1089.cpp]"]
end

node_judge(("User / judge"))

node_judge -->|"provides input"| node_abc096
node_abc096 -->|"prints answer"| node_judge
node_judge -->|"provides input"| node_abc247
node_abc247 -->|"prints answers"| node_judge
node_judge -->|"provides input"| node_abc283
node_abc283 -->|"prints answer"| node_judge
node_judge -->|"provides input"| node_average
node_average -->|"prints answer"| node_judge
node_judge -->|"provides input"| node_keyboard
node_keyboard -->|"prints result"| node_judge
node_judge -->|"invokes method"| node_roman
node_roman -->|"returns integer"| node_judge
node_judge -->|"invokes method"| node_substring
node_substring -->|"returns length"| node_judge
node_judge -->|"provides input"| node_attack
node_attack -->|"prints result"| node_judge
node_judge -->|"provides input"| node_damage
node_damage -->|"prints result"| node_judge

click node_abc096 "https://github.com/uynilo9/cpcpp/blob/main/atcoder/atcoder_abc096_c.cpp"
click node_abc247 "https://github.com/uynilo9/cpcpp/blob/main/atcoder/atcoder_abc247_d.cpp"
click node_abc283 "https://github.com/uynilo9/cpcpp/blob/main/atcoder/atcoder_abc283_d.cpp"
click node_average "https://github.com/uynilo9/cpcpp/blob/main/kattis/kattis_averageshard.cpp"
click node_keyboard "https://github.com/uynilo9/cpcpp/blob/main/kattis/kattis_lyklagangriti.cpp"
click node_roman "https://github.com/uynilo9/cpcpp/blob/main/leetcode/leetcode_13.cpp"
click node_substring "https://github.com/uynilo9/cpcpp/blob/main/leetcode/leetcode_3.cpp"
click node_attack "https://github.com/uynilo9/cpcpp/blob/main/ntoj/ntoj_1077.cpp"
click node_damage "https://github.com/uynilo9/cpcpp/blob/main/ntoj/ntoj_1089.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_abc096,node_abc247,node_abc283,node_judge toneBlue
class node_average,node_keyboard toneAmber
class node_roman,node_substring toneMint
class node_attack,node_damage toneRose
```

## Components

### AtCoder

- [Grid check](https://github.com/uynilo9/cpcpp/blob/main/atcoder/atcoder_abc096_c.cpp): `atcoder/atcoder_abc096_c.cpp`
- [Queue queries](https://github.com/uynilo9/cpcpp/blob/main/atcoder/atcoder_abc247_d.cpp): `atcoder/atcoder_abc247_d.cpp`
- [Scope check](https://github.com/uynilo9/cpcpp/blob/main/atcoder/atcoder_abc283_d.cpp): `atcoder/atcoder_abc283_d.cpp`

### Kattis

- [Average split](https://github.com/uynilo9/cpcpp/blob/main/kattis/kattis_averageshard.cpp): `kattis/kattis_averageshard.cpp`
- [Keyboard editor](https://github.com/uynilo9/cpcpp/blob/main/kattis/kattis_lyklagangriti.cpp): `kattis/kattis_lyklagangriti.cpp`

### LeetCode

- [Roman conversion](https://github.com/uynilo9/cpcpp/blob/main/leetcode/leetcode_13.cpp): `leetcode/leetcode_13.cpp`
- [Substring length](https://github.com/uynilo9/cpcpp/blob/main/leetcode/leetcode_3.cpp): `leetcode/leetcode_3.cpp`

### NTOJ

- [Grid attack](https://github.com/uynilo9/cpcpp/blob/main/ntoj/ntoj_1077.cpp): `ntoj/ntoj_1077.cpp`
- [Range damage](https://github.com/uynilo9/cpcpp/blob/main/ntoj/ntoj_1089.cpp): `ntoj/ntoj_1089.cpp`

### Other components

- **User / judge**

## Connections

- User / judge → Grid check: provides input
- Grid check → User / judge: prints answer
- User / judge → Queue queries: provides input
- Queue queries → User / judge: prints answers
- User / judge → Scope check: provides input
- Scope check → User / judge: prints answer
- User / judge → Average split: provides input
- Average split → User / judge: prints answer
- User / judge → Keyboard editor: provides input
- Keyboard editor → User / judge: prints result
- User / judge → Roman conversion: invokes method
- Roman conversion → User / judge: returns integer
- User / judge → Substring length: invokes method
- Substring length → User / judge: returns length
- User / judge → Grid attack: provides input
- Grid attack → User / judge: prints result
- User / judge → Range damage: provides input
- Range damage → User / judge: prints result
