标签:
6 2 3 2 1 4 3 5 3 4
Case #1: 2 2
#include<stdio.h> #include<map> #include<string> using namespace std; const int N = 1e4+5; int main(){ int n,m,a[N],q[N]; int t=0; while(scanf("%d%d",&n,&m)>0){ for(int i=0; i<n; i++) scanf("%d",&a[i]); int maxq=0; for(int i=0; i<m; i++) { scanf("%d",&q[i]); if(q[i]>maxq)maxq=q[i]; } int ans[N]={0}; for(int i=0;i<n; i++){ int k=0,maxa=a[i],mina=a[i]; map<int,int>mp; for(int j=1;j<=maxq&&i+j-1<n; j++){ if(mp[a[i+j-1]]==0) k++,mp[a[i+j-1]]=1; if(a[i+j-1]>maxa)maxa=a[i+j-1]; else if(a[i+j-1]<mina)mina=a[i+j-1]; if(j==k&&maxa-mina+1==k) ans[k]++; } } printf("Case #%d:\n",++t); for(int i=0;i<m; i++) printf("%d\n",ans[q[i]]); } return 0; }
标签:
原文地址:http://blog.csdn.net/u010372095/article/details/46348435