遇到了几道C++的数组题,希望大 GOD解惑,最好有注释

小明和排队

描述:
小明现在喜欢上了排队,这天小明得到一个队列,队列里面每一个人都有身高和体重,小明想出这样一个问题,对于一个j位置的人,找到他左边第一个和他身高相同的人,假设这个人的位置为i ,那么j 位置的人得到的奖励为i 到 j之间(不包括 i 和j )所有人的体重和,小明想要知道这个队列中得到最多奖励的那个人的奖励是多少。但是小明不会做,聪明的你帮助小明解决这个问题吧。
输入格式
第一行输入一个n,表示队列的人数
接下来n行,每行两个数h和w,表示这个人的身高和体重
输出格式
输出一个数,表示最大奖励。
数据范围
1<=n<=1000000
1<=h,w<=1000
输入样例

5
10 20
20 10
20 30
10 10
20 20

输出样例

样例解释
第一个人,第二个人以及第三个人都得到0奖励第四个人得到10+30=40奖励
第五个人得到10的奖励

把输入的人的身高和体重记录到数组,每输入一个人,则从数组已有数据中搜索第一个和他身高一样的人,然后将两个人位置之间的所有人的体重求和

#include <iostream>
using namespace std;
#define MAX 1000000
int main()
{
    int n,i;
    cin>>n;
    int *sg = new int[n];
    int *tz = new int[n];
    for(i=0;i<n;i++)
    {
        cin>>sg[i]>>tz[i];
        for(int j=i-1;j>=0;j--)
        {
            if(sg[j] == sg[i])
            {
                int sum = 0;
                for(int k=j+1;k<i;k++)
                    sum += tz[k];
                cout<<sum<<endl;
                break;
            }
        }
    }

        return 0;
}