数量

来源:互联网 发布:全时云会议mac版下载 编辑:程序博客网 时间:2024/04/27 22:56

数量

时间限制: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 51 21 31 42 43 51 5
样例输出
0 21 22 22 13 03 2
来源
原创
上传者

TC_蒋鑫博



源代码:

#include<stdio.h>
int a[1000005];
int yao[1000005];
int meiyao[1000005];
int main()
{
int m,n,i,q,t;
while(~scanf("%d%d",&m,&n))
{
yao[1000005]={0};
meiyao[1000005]={0};
for(i=1;i<=m;++i)
{
 scanf("%d",&a[i]);
 if(a[i]>0)
 {
  yao[i]=yao[i-1]+1;
 
  meiyao[i]=meiyao[i-1];
 } 
 if(a[i]<0)
 {
  meiyao[i]=meiyao[i-1]+1;
  yao[i]=yao[i-1];
 }
 if(a[i]==0)
 {
  meiyao[i]=meiyao[i-1];
  yao[i]=yao[i-1];
 }
 
}

while(n--)
{
scanf("%d%d",&q,&t);
printf("%d %d\n",yao[t]-yao[q-1],meiyao[t]-meiyao[q-1]);
}

}
return 0;
 } 


0 0