zoukankan      html  css  js  c++  java
  • 1180 中位数

    1180 中位数

     

     时间限制: 1 s
     空间限制: 128000 KB
     题目等级 : 黄金 Gold
     
     
     
    题目描述 Description

    nyz!ysu!同学给你一个1~N的排列,他想问你该排列有多少个长度为奇数的连续子序列的中位数是K。中位数定义:把所有元素从小到大排列后,位于中间的数。

    输入描述 Input Description

    第一行为两个正整数N和K。

    第二行为1~N 的排列

    输出描述 Output Description

    仅输出一个整数,中位数为K的连续子序列个数

    样例输入 Sample Input

    7 4 

    5 7 2 4 3 1 6

    样例输出 Sample Output

    4

    数据范围及提示 Data Size & Hint

    样例解释:{4}, {7,2,4}, {5,7,2,4,3}和{5,7,2,4,3,1,6}。 

    【数据说明】

    30%的数据,n<=100

    50%的数据  n<=10000

    100%的数据,1<=k<=n<=100000

    分类标签 Tags 点此展开 

     
    暂无标签
    AC代码:
    #include<cstdio>
    using namespace std;
    const int N=1e5+10;
    int n,k,p,ans,a[N],f[N<<1];
    int main(){
        scanf("%d%d",&n,&k);
        for(int i=1;i<=n;i++) scanf("%d",&a[i]);
        for(int i=1;i<=n;i++){
            if(a[i]>k) a[i]=a[i-1]+1;
            else if(a[i]<k) a[i]=a[i-1]-1;
            else{
                p=i;
                a[i]=a[i-1];
            }
        }
        for(int i=0;i<p;i++) f[a[i]+100000]++;
        for(int i=p;i<=n;i++) ans+=f[a[i]+100000];
        printf("%d",ans);
        return 0;
    } 
  • 相关阅读:
    PTA9
    PTA8
    第七周
    第六周
    第五周
    PTA4
    2019第三次作业
    第十周课程总结
    第九周课程总结&实验报告(七)
    第八周课程总结&实验报告(六)
  • 原文地址:https://www.cnblogs.com/shenben/p/5931311.html
Copyright © 2011-2022 走看看