HDU 5247 找连续数(用映射做题,set)

来源:互联网 发布:多连拍用的什么软件 编辑:程序博客网 时间:2024/04/29 19:51
#include<stdio.h>#include<string.h>#include<set>#include<algorithm>using namespace std;const int maxm=1e4+10;int num[maxm];int sum[maxm];int main(){    int n,m;    scanf("%d%d",&n,&m);    for(int i=0;i<n;i++)    {        scanf("%d",&num[i]);    }    memset(sum,0,sizeof(sum));    sum[1]=n;    for(int i=0;i<n;i++)    {        int MAX,MIN;        set<int>s;        s.insert(num[i]);        MAX=MIN=num[i];        for(int j=1;j<1000&&i+j<n;j++)        {            s.insert(num[i+j]);            MAX=max(MAX,num[i+j]);            MIN=min(MIN,num[i+j]);            if(j+1!=s.size())            {                break;            }            if(j==MAX-MIN)            {                sum[j+1]++;            }        }    }    printf("Case #1:\n");    int a;    for(int i=0;i<m;i++)    {        scanf("%d",&a);        printf("%d\n",sum[a]);    }    return 0;}

0 0