信息学奥赛C++语言: 博物馆

【题目描述】
从前,有一个偌大的博物馆,每天都会有数以万计的人们来参观,欣赏这里的艺术作品。这一天,博物馆来了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

【样例解释】
有四批人,每批人要加上一位导游,分别是6,7,8,9人,离开的是第1和3批,即走了6+8=14人,剩7+9=16人。

代码

#include
using namespace std;
long long n,m[100001],s,k,a,b;
int main()
{
	scanf("%d",&n);
	while(n)
    {
        scanf("%d",&a);
        if(a==0)
        {
            scanf("%d",&b);
            m[k]=b+1;
            k++;
            s+=b+1;
        }
        if(a==1)
        {
            scanf("%d",&b);
            s-=m[b];
        }
        n--;
    }
    printf("%d",s);
}

你可能感兴趣的:(C++习题)