您的位置:首页 > 产品设计 > UI/UE

hdoj4908BestCoder Sequence

2016-02-16 15:07 387 查看


BestCoder Sequence

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 1546    Accepted Submission(s): 529


Problem Description

Mr Potato is a coder.

Mr Potato is the BestCoder.

One night, an amazing sequence appeared in his dream. Length of this sequence is odd, the median number is M, and he named this sequence as Bestcoder Sequence.

As the best coder, Mr potato has strong curiosity, he wonder the number of consecutive sub-sequences which are bestcoder sequences in a given permutation of 1 ~ N.

 

Input

Input contains multiple test cases. 

For each test case, there is a pair of integers N and M in the first line, and an permutation of 1 ~ N in the second line.

[Technical Specification]

1. 1 <= N <= 40000

2. 1 <= M <= N

 

Output

For each case, you should output the number of consecutive sub-sequences which are the Bestcoder Sequences. 

 

Sample Input

1 1
1
5 3
4 5 3 2 1

 

Sample Output

1
3

Hint
For the second case, {3},{5,3,2},{4,5,3,2,1} are Bestcoder Sequence.

 

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<list>
#include<queue>
#include<vector>
using namespace std;
const int maxn=40010;
int num[maxn];
int vis[maxn];
int visa[maxn];
int visb[maxn];
int main()
{
int n,m,i,j,k,pos;
while(scanf("%d%d",&n,&m)!=EOF){
for(i=1;i<=n;++i){
scanf("%d",&num[i]);
if(num[i]==m)pos=i;
}
memset(vis,0,sizeof(vis));
memset(visa,0,sizeof(visa));
memset(visb,0,sizeof(visb));
int ans=1;
for(i=pos-1;i>=1;--i){
vis[i]=vis[i+1];
if(num[i]>m)vis[i]++;
if(((pos-i+1)&1)&&(vis[i]==(pos-i)/2))ans++;
int g=vis[i],s=(pos-i)-vis[i];
if(g-s>=0)visa[g-s]++;
else visb[s-g]++;
}
for(i=pos+1;i<=n;++i){
vis[i]=vis[i-1];
if(num[i]>m)vis[i]++;
if(((i-pos+1)&1)&&(vis[i]==(i-pos)/2))ans++;
int g=vis[i],s=(i-pos)-vis[i];
if(s-g>=0)ans+=visa[s-g];
else ans+=visb[g-s];
}
printf("%d\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hdoj4908BestCoder Se