昊昊爱运动
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
昊昊喜欢运动
他 N 天内会参加 M 种运动(每种运动用一个 [1,m] 的整数表示)
舍友有 Q 个问题
问昊昊第 l 天到第 r 天参加了多少种不同的运动
Input
输入两个数 N , M ( 1≤N≤2000 , 1≤M≤100 );
输入 N 个数 ai 表示在第i天昊昊做了第 ai 类型的运动;
输入一个数 Q ( 1≤Q≤106 );
输入 Q 行 每行两个数 l , r ( 1≤l≤r≤n );
Output
一共 Q 行
每一行输出一个数 表示昊昊在第 l 天到第 r 天一共做了多少种活动
Sample input and output
Sample Input | Sample Output |
---|---|
5 3 1 2 3 2 2 3 1 4 2 4 1 5 | 3 2 3 |
Source
<pre name="code" class="cpp">#include<stdio.h>
#include<string.h>
int pre[2005][105];//表示[1,i]区间里,j出现的次数
int main(){
int n,m,x,t,l,r,ans;
while(scanf("%d%d",&n,&m)!=EOF){
memset(pre,0,sizeof(pre));
for(int i=1;i<=n;i++){
scanf("%d",&x);
pre[i][x]=1;
for(int j=1;j<=m;j++)pre[i][j]+=pre[i-1][j];
}
scanf("%d",&t);
for(int i=1;i<=t;i++){
ans=0;
scanf("%d%d",&l,&r);
for(int j=1;j<=m;j++)ans+=(pre[r][j]>pre[l-1][j]);
printf("%d\n",ans);
}
}
return 0;
}