有一个数字序列 S,初始时是空的,定义以下两种操作:
i x 在序列的末尾插入数字 x,并输出当前序列中有几个数小于 x(1<=x<=100000)
d x 删除序列中所有的数字 x,如果序列中没有数字 x,则不产生任何影响。
(1<=x<=100000) 。
★数据输入
输入第一行是一个整数m(1<=m<=100000),表示有m 种操作。
接下来m 行,表示 m 种操作。
★数据输出
对于每个 i 操作,输出一行一个整数,表示当前序列中有几个数小于 x。
输入示例 输出示例
5 0
i 3 0
i 2 1
i 3 1
d 3
i 5
#include <stdio.h>
#define N 100001
#define M 1001
int main()
{
int op, x, t;
char ch;
int q;
int array1[N] = { 0 };
int array2[M] = { 0 };
scanf("%d", &op);
getchar();
for (int i = 0; i<op; i++)
{
scanf("%c %d", &ch, &q);
getchar();
t = q / 100;
if (ch == 'i'){
int count = 0;
x = t * 100;
array2[t]++;
array1[q]++;
for (int j = 0; j<t; j++)
count += array2[j];
for (x; x<q; x++)
count += array1[x];
printf("%d\n", count);
}
else{
array2[t]-=array1[q];
array1[q] = 0;
}
}
return 0;
}