您的位置:首页 > 其它

数量

2016-03-07 20:34 246 查看


数量

时间限制: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


来源原创
上传者
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;

 } 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: