小明和排队
描述:
小明现在喜欢上了排队,这天小明得到一个队列,队列里面每一个人都有身高和体重,小明想出这样一个问题,对于一个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;
}