数量
时间限制:
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
-
#include<stdio.h> #include<string.h> int a[1000005]; int b[1000005]; int main() { int n,m,t,k,i; while(scanf("%d%d",&n,&m)!=EOF) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); for(i=1;i<=n;i++) { scanf("%d",&t); if(t>0) { a[i]=a[i-1]+1; b[i]=b[i-1]; } else if(t==0) { b[i]=b[i-1]; a[i]=a[i-1]; } else if(t<0) { b[i]=b[i-1]+1; a[i]=a[i-1]; } } for(i=0;i<m;i++) { scanf("%d%d",&t,&k); printf("%d %d\n",a[k]-a[t-1],b[k]-b[t-1]); } } return 0; }
-
输入有多组数据,每组数据有N,M代表N个狗,M次询问(n<=1000000)