题目描述
从前,有一个偌大的博物馆,每天都会有数以万计的人们来参观,欣赏这里的艺术作品。这一天,博物馆来了N批人,第i批人有Ai个人以及一个导游组成,他们依次到达,但同时也有一些批次的人离开,由于人次太多,博物馆的管理人员递给你一些人数表,就请你来统计一下剩下多少人。
输入
第一行是个整数N,接下来N行。每行两个数,第一个数X,如果X=0则后面接一个数Ai,表示来了Ai个人;如果X=1,那么接下来就有一个数Y,表示来的人中的第Y批离开了。
输出
一个数,表示剩下多少人。
样例输入
6 0 5 0 6 1 1 0 7 0 8 1 3
样例输出
16
数据范围限制
对于30%的数据,1≤N≤100,1≤Ai≤1000;
对于100%的数据,1≤N≤1000000,1≤Ai≤1000000。
保证:X只为0或1,Y一定符合要求。
提示
有四批人,每批人要加上一位导游,分别是6,7,8,9人,离开的是第1和3批,即走了6+8=14人,剩7+9=16人。
#include<iostream>
using namespace std;
int a[10000001],n,x,q1,q2,s;//分别表示人数,来去人次数,来/去,来的人数,走的批次,计数器
int main(){
cin>>n;//输入总批次
for(int i=1;i<=n;i++){
cin>>x;//输入来/走
if(!x){//来
q1++;//来的批次
cin>>a[q1];//输入来的人数
a[q1]++;//多1导游
}else{//走
cin>>q2;//输入走的批次
a[q2]=0;//归0
}
}for(int i=1;i<=n;i++)s+=a[i];//算总和
cout<<s;//输出
return 0;
}