<?php $show_title="$MSG_SOURCE - $OJ_NAME"; ?>
<?php include("template/$OJ_TEMPLATE/header.php");?>

<div class="padding">
    <div style="margin-top: 0px; margin-bottom: 14px; padding-bottom: 0px; " >
        <p class="transition visible">
           <h1 style="margin-left: 10px; display: inline-block; "><?php echo $MSG_SOURCE?></h1>
        </p>
        <div class="ui existing segment">
        <?php 
        $tag_map = [
    1 => ['函数', '分支结构', '变量交换', '基本数据类型', '基本输出', '基本运算', '字符串输出', '字符比较', '待补充', '循环结构', '模运算', '浮点处理', '浮点数处理', '百分比计算', '输入输出', '输出', '顺序结构'],
    2 => ['ASCII编码处理', 'ASCII转换', 'for循环', 'sizeof运算符', '位运算', '函数定义', '字符串', '字符处理', '数学函数', '数学计算', '数学运算', '枚举', '类型转换', '自定义函数'],
    3 => ['ASCII处理', 'ASCII编码', 'vector', '一维数组', '三维几何', '二进制转换', '交换', '交换操作', '几何计算', '分数化简', '单位转换', '去重', '反转', '取模运算', '四舍五入', '基本输入输出', '多层循环', '多层循环结构', '大小写转换', '大数比较', '字符串处理', '字符运算', '平面分割', '异或', '排序算法', '插入元素', '插入操作', '数学定理', '数学递推', '数学问题', '数组', '数组操作', '数组索引', '数论', '时间处理', '条件判断', '枚举法', '查找', '格式化输出', '模拟法', '浮点数运算', '浮点运算', '矩阵操作', '科学记数法转换', '素数判断', '贪心算法', '辗转相除法', '进制转换', '逆序输出', '递推算法', '阶乘计算'],
    4 => ['GCD', '二维数组', '函数参数传递', '向量', '回文判断', '循环', '循环链表', '循环队列', '插入排序', '文件操作', '斐波那契数列', '日期处理', '树结构', '比例计算', '滑动窗口', '筛选法', '线性搜索', '结构体', '计数', '遍历', '阶乘'],
    5 => ['gcd', '二分查找', '互素', '交互题', '冒泡排序', '分数运算', '前缀匹配', '动态规划', '区间合并', '周期规律', '哈希表', '回文数', '因数分解', '图遍历', '坐标转换', '子序列', '快速幂', '指针', '排列', '排列处理', '排列组合', '排序', '数学', '数学规律', '斜率计算', '方向处理', '最大不可表示数', '最大公约数', '有序数组', '概率论', '汉明距离', '筛数法', '素数', '素数筛', '素数筛选', '素数表', '约瑟夫问题', '语法分析', '质数', '贪心', '费马小定理', '逆序数', '递归', '链表', '除法', '集合', '集合操作', '集合运算', '高精度运算'],
    6 => ['BFS', 'DFS', 'DFS/BFS', 'LCM', 'LIS', 'Trie树', '三维数组', '三维空间', '三角形性质', '三重循环', '中位数', '中值平滑', '二分法', '二叉排序树', '二叉搜索树', '二叉查找树', '二叉树', '二叉树遍历', '二维数组处理', '二进制', '优先级处理', '优先队列', '传送门处理', '倍数', '全排列生成', '内存管理', '几何分析', '几何模拟', '函数映射', '函数调用', '函数迭代', '分形', '分数处理', '分治', '动态数组', '区间处理', '区间性质分析', '区间查询', '区间覆盖', '区间调度', '半圆相交判断', '单调栈', '博弈论', '卡特兰数', '双向链表', '双指针', '后缀数组', '后缀表达式', '哈密尔顿回路', '回文', '回文串', '回文数判断', '回溯', '因子分解', '堆', '奇偶性', '字符串排序', '宏替换', '对称性检查', '对角线性质', '差分', '并查集', '循环处理', '循环检测', '拓扑排序', '括号匹配', '搜索', '数位处理', '数位统计', '数字处理', '斐波那契', '最长上升子序列', '最长不下降子序列', '最长递增子序列', '期望计算', '构造', '栈', '树', '树形DP', '树遍历', '概率计算', '模式匹配', '模拟', '模拟算法', '死锁处理', '游戏策略', '物理模拟', '状态压缩', '状态机', '状态空间搜索', '状态转移', '环检测', '环状结构', '直线相交', '矩阵变换', '矩阵处理', '矩阵旋转', '空间向量', '空间想象', '等差数列', '素数筛法', '约数', '约数个数', '线性DP', '线段树', '统计', '网格路径', '罗马数字处理', '背包问题', '表达式求值', '表达式解析', '表达式转换', '质数判断', '质数筛', '路径查询', '逆向思维', '逆序对', '逆排列', '递推', '逻辑运算', '邻接矩阵', '邻接表', '队列', '集合覆盖', '面向对象', '面向对象类', '预处理'],
    7 => ['KMP算法', 'LCA', 'LCS', 'Nim游戏', 'XOR', 'multiset', '三分查找', '中位数计算', '二分图判定', '二分图匹配', '二次函数', '二次方程', '二维前缀和', '二维滑动窗口', '交互式问题', '交互问题', '优化', '关键点', '内存对齐', '几何', '几何变换', '几何图形结构', '几何处理', '几何算法', '几何级数', '凸优化', '凸包算法', '函数分析', '函数解析', '函数计数', '分块', '分治算法', '分组背包', '前缀和', '前缀树', '前缀积', '前缀编码', '剪枝', '动态查询', '动态维护集合', '匈牙利算法', '匹配问题', '区间DP', '区间修改', '区间操作', '区间更新', '单调性', '单调队列', '压缩处理', '反射', '反射原理', '同余', '向量夹角', '向量运算', '周期性', '周期数组', '周期检查', '周期计算', '哈夫曼编码', '哈密尔顿路径', '哈密顿路径', '哈希', '哈希应用', '回文串处理', '回文子串', '回溯法', '图同构', '图收缩', '在线查询', '坐标变换', '坐标处理', '多维背包', '多边形包含判断', '多项式', '大数处理', '子序列处理', '子序列自动机', '子集和问题', '字典序', '字典序比较', '字符串匹配', '字符串比较', '字符串编辑距离', '完全背包', '实数根', '对称中心', '对称性判断', '对称点', '嵌套规则匹配', '差分数组', '差分约束', '布尔运算', '平面图', '康托展开', '开关问题', '异或运算', '强连通分量', '归并排序', '循环移位', '循环节', '循环表示', '快速傅立叶变换', '扩展欧几里得算法', '扫描线', '投影变换', '抛物线计算', '持久化数据结构', '指针操作', '指针系统', '排列生成', '数位DP', '数列循环节', '数字根', '数学推导', '数学期望', '斜率变化点', '方向向量处理', '方程', '旋转', '时间复杂度分析', '时间旅行', '时间管理', '曼哈顿距离', '最优化', '最大平方因子', '最大流', '最小公倍数', '最小化距离平方和', '最小圆覆盖', '最小距离', '最短路径', '最长非递减子序列', '期望', '期望DP', '极角排序', '极限计算', '树同构', '树形结构', '树状数组', '树直径', '格雷码', '桥', '桥边', '模逆元', '欧拉函数', '欧拉回路', '欧拉路', '欧拉路径', '正则图', '正则表达式', '泛洪算法', '深度优先搜索', '独立集', '环形处理', '环形结构', '生成函数', '生成树', '生成树计数', '矩形处理', '矩阵', '矩阵运算', '碰撞检测', '祖先关系处理', '祖先查询', '离线处理', '离线查询', '算法优化', '算法优化技巧', '算法分析', '类型推导', '素数判定', '约束满足', '线性代数', '线性基', '线性探测', '线段扫描', '线段相交', '绝对值处理', '自动机', '莫队算法', '表达式处理', '视线判断', '计算几何', '质因数分解', '质心计算', '质数筛法', '费马平方和定理', '连通分量', '连通块', '连通性', '连通组件', '速度计算', '逻辑推理', '错位排列', '队列模拟', '随机数生成', '集合判断', '集合论', '霍夫曼编码'],
    8 => ['BFS/DFS', 'KM算法', 'Kruskal算法', 'RSA', 'SG函数', '三维计算', '三进制运算', '二分图', '二分图最大匹配', '二分图检查', '二维差分', '二进制处理', '倍增法', '几何判断', '几何结构', '凸包', '凸多边形', '分数规划', '动态树', '动态维护', '区间极值', '单调队列优化', '原根', '反链', '后缀自动机', '回文自动机', '图着色', '图结构', '图论', '图论算法', '复数', '多项式运算', '子树操作', '容斥原理', '对称性处理', '平衡树', '序列比对', '度模运算', '循环同构', '快速傅里叶变换', '快速沃尔什变换', '投影', '数学优化', '数学分析', '数据结构', '数据结构优化', '数独', '数组处理', '斜率优化', '方差计算', '最大匹配', '最大权闭合子图', '最大费用最大流', '最大费用流', '最小乘积生成树', '最小割', '最小生成树', '最小费用流', '最短路', '查询处理', '树形动态规划', '树的直径', '概率', '概率期望', '点在多边形内判断', '点集查询', '状态压缩动态规划', '矩阵快速幂', '矩阵树定理', '离散化', '线性递推', '组合数学', '网络流', '莫比乌斯函数', '计数原理', '质心', '连通图', '连通子图', '除数函数', '高精度计算'],
];
        
        // 生成标签地图

        foreach ($tag_map as $level => $tags): ?>
            <h3><a href="problemset.php?search=难度<?php echo $level; ?>">难度 <?php echo $level; ?></a></h3>
            <div class="tag-cloud">
            <?php foreach ($tags as $tag): 
            $label_theme = "default";
            // Check if this tag has any problems associated with it
            $sql = "SELECT count(*) as cnt FROM `problem` WHERE defunct='N' AND (title LIKE ? OR source LIKE ?)";
            $tag_search = "%" . $tag . "%";
            $result = pdo_query($sql, $tag_search, $tag_search);
            if (!$result || $result[0]['cnt'] <= 0) continue; // Skip tags with no active problems
            
            ?>
            <a href="problemset.php?search=<?php echo urlencode($tag); ?>" class="ui label"><?php echo $tag; ?></a>
            <?php endforeach; ?>
            </div>
        <?php endforeach; ?>
        <?php 
        
        // 显示剩余未分类标签
        $all_mapped_tags = array_merge(...array_values($tag_map));
        $remaining_tags = array_diff($category, $all_mapped_tags);
        ?>
            <h3>其他</h3>
            <div class="tag-cloud">
            <?php foreach ($remaining_tags as $tag): 
                if (trim($tag) == "" || trim($tag) == "&nbsp") continue;
                ?>
                <a href="problemset.php?search=<?php echo urlencode(trim($tag)); ?>" class="ui label"><?php echo trim($tag); ?></a>
            <?php endforeach; ?>
            </div>
        </div>
    </div>
<?php include("template/$OJ_TEMPLATE/footer.php");?>
