hdu 5200 离线处理+思维

来源:互联网 发布:mac 搜狗五笔拼音设置 编辑:程序博客网 时间:2024/04/23 18:53
#include <iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxn=50000+10;
struct node
{
    int id;
    int val;
}p[maxn],q[maxn];
int vis[maxn],ans[maxn];
bool cmp(node a,node b)
{
    return a.val>b.val;
}
int main()
{
    int n,m;
    while(~scanf("%d%d",&n,&m))
    {
        memset(vis,0,sizeof(vis));
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&p[i].val);
            p[i].id=i;
        }
        for(int i=1;i<=m;i++)
        {
            scanf("%d",&q[i].val);
            q[i].id=i;
        }
        sort(p+1,p+n+1,cmp);
        sort(q+1,q+m+1,cmp);
        int pos=1,curans=0;
        for(int i=1;i<=m;i++)
        {
            while(pos<=n&&p[pos].val>q[i].val)
            {
                vis[p[pos].id]=1;
                curans++;
                if(vis[p[pos].id-1]) curans--;
                if(vis[p[pos].id+1]) curans--;
                pos++;
            }
            ans[q[i].id]=curans;
        }
        for(int i=1;i<=m;i++) printf("%d\n",ans[i]);
    }

}

0 0
原创粉丝点击