完成一个对不确定人数的候选人得票的统计程序。

题目描述
完成一个对候选人得票的统计程序。候选人人数不定,但没有重名的。使用结构体存储每一个候选人的名字、得票数、第一张和最后一张得票的序号(从1数)。记录每一张选票的得票人名,输出得票最多和得票最少的候选人信息

输入格式
第一行有一个整数n,表示以下有n张选票信息将会输入。n不大于100。
以后的n行中,每一行包含一个人名,为选票的得票人。保证每一个人名都是唯一。

输出格式
有两行,分别为得票最多和得票最少的信息。格式为首先输出人名,其后输出一个冒号,输出候选人的得票数、第一张和最后一张得票的序号,空格隔开。(若票数相同,名字短的优先,若名字长度也相同,逐字符比较ASCII码,小的优先。)

输入样例
10
Li
Li
Fun
Zhang
Zhang
Fun
Li
Hu
Zhang
Li

输出样例
Li:4 1 10
Hu:1 8 8

#include <iostream>
using namespace std;
struct person {
    char name[100];
    int count;
};
int main() {
    int n;
    int  count = 0;
    cin >> n;
    char arr[100];
    char name[100];
    char b;
    for (int i = 0; i < n; i++) {//读入投票的情况//
        cin >> b;
        int a = 0;
        arr[a] = b;
        a++;
        for (int i = 0; i < n; i++) {//打印一份投票里面的所有人的名字的数组名单//
            name[i] = arr[0];
        }
    }
    for (int i = 0; i < n; i++) {//提取名单中中不重复的名字//
        int r = 0;
        r++;
        if (name[r] == arr[i]) {
            name[r] = name[r];
           }
    
    }
    for (int i = 0; i < n; i++) {
        cout << name[i] << endl;
    }
        for (int j = 0; j < n; j++) {
        if (name[j]==arr[j]) {
        count++;}}
    
    return 0;
}

这是我的代码
错的好离谱
想不到什么好的思路