分析:使用STL的set容器实现,set的内部排序默认是从小到达的。先把结果预处理到一个数组中存储起来,之后直接输出即可。
#include<iostream> #include<set> using namespace std; #define N 10005 int a[N]; int ans[N]; set<int> s; //默认从小到达排序 set<int>::iterator it; int main() { int T=0; int n,m,k,i,j; while(cin>>n>>m) { for(i=0;i<n;i++) cin>>a[i]; memset(ans,0,sizeof(ans)); for(i=0;i<n;i++) { s.clear(); s.insert(a[i]); ans[1]++; for(j=i+1;j<n;j++) { if(s.find(a[j])==s.end()) //保证不重复 s.insert(a[j]); else break; it=s.end(); if(*(--it)-*s.begin()+1==s.size()) ans[s.size()]++; } } cout<<"Case #"<<++T<<":"<<endl; while(m--) { cin>>k; cout<<ans[k]<<endl; } } return 0; }
时间: 2024-10-13 20:36:35