数量
时间限制:200 ms | 内存限制:65535 KB
难度:0
-
描述
-
HJS大牛想去街上吃饭,街道旁边拴着很多狗,他想我堂堂......(省略n个字)岂会被狗咬,所以他很牛的从狗的面前经过,不管是否被上一条狗咬过,下次还会从狗的面前过(
J I A N)
现在问题来了,我们给狗编号从1...n,有多次询问,每次询问M,N这一段有多少狗咬过他有多少狗没有咬过他
-
输入
- 输入有多组数据,每组数据有N,M代表N个狗,M次询问(n<=1000000)
接下来一行有n个数正数代表被狗咬,负数代表不咬,0代表不确定看心情,所以我们只计算确定的就可以了
接下来M行每行两个数a,b代表a到b这一段
输出 - 每次查询输出一行,每行两个数中间有一个空格,分别代表咬人的狗的数量,没咬人的数量 样例输入
-
5 6 -1 -2 3 4 5 1 2 1 3 1 4 2 4 3 5 1 5
样例输出 -
0 2 1 2 2 2 2 1 3 0 3 2
- 输入有多组数据,每组数据有N,M代表N个狗,M次询问(n<=1000000)
#include <stdio.h>
int main()
{
int number,times,i ;
int bite[1000005],notbite[1000005];
while(scanf("%d%d",&number,×)!=EOF)
{
bite[0]=0 ;
notbite[0]=0 ;
for(i=1;i<=number;i++)
{
bite[i]=bite[i-1];
notbite[i]=notbite[i-1];
int temp ;
scanf("%d",&temp);
if(temp>0)
{
bite[i]++;
}
if(temp<0)
{
notbite[i]++;
}
}
int start,end ;
for(i=0;i<times;i++)
{
scanf("%d%d",&start,&end);
if(start==0)
{
printf("%d %d\n",bite[end],notbite[end]);
}
else
{
printf("%d %d\n",(bite[end]-bite[start-1]),(notbite[end]-notbite[start-1]));
}
}
}
return 0 ;
}