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; }
相关文章推荐
- Windows 98 SE 第二版 迅雷下载地址
- J2SE1.5 注释语法
- 简单说说Java SE、Java EE、Java ME三者之间的区别
- (翻译)Java SE 8 Lambda 特性与基本原理(上)
- (翻译)Java SE 8 Lambda 特性与基本原理(下)
- Linux 文件特殊权限
- 空白密码引发远程连接Windows Server 2008失败
- JAVA SE Lesson 1
- java教程
- Java SE 2nd day:Object-oriented 01
- Java SE 3rd day:Object-oriented 02
- Java SE 4th day:Object-oriented 03
- Java SE 5th day:Object-oriented 04
- Java SE 6th day ——Exception
- JavaSE 7th day —— Package &Access Permissions
- Java SE 8th day Eclipse
- Java SE 09_Generics
- Java SE 12_Frequently-used Class Library(2)
- Java SE 14th IO (1)
- Java SE 15th IO (2)