zoukankan      html  css  js  c++  java
  • [swustoj 327] 最小的最大与最大的最小

    最小的最大与最大的最小(0327)

    Time limit(ms): 2500 Memory limit(kb): 65535 Submission: 329 Accepted: 18
     
    问题描述

    又是一个数据处理题(>_<)。还是直接看Input吧。

    输入

    一组测试实例。 Line 1:两个数n, m (1 <= n <= 1000000, 1 <= m <= 100000),n表示数字个数,m表示查询次数。 Line 2:包含n个整数A(i)(0 <= A(i) <= 1000000000)。两个数之间以空格隔开。 接下来m行:每行包含两个整数a,b(1 <= a <= 2, -1000000000 <= b <= 1000000000)。表示一次查询。当a = 1时,输出n个数中比b小的数的最大值。当a = 2时,输出n个数中比b大的数的最小值。如果不存在满足条件的数,则输出-1。

    输出

    每于每一次查询,输出答案,每个答案占一行。

    样例输入
    5 2
    1 2 3 3 5
    1 3
    2 5

    样例输出
    2
    -1
     
    Hint
    SCPC_Zhangjian
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    #define INF 0x7fffffff
    #define N 1000010
     
    int n,m;
    int a[N];
     
    int low_bound(int k)
    {
        int l=1,r=n+1;
        while(l<r)
        {
            int m=l+(r-l)/2;
            if(a[m]>=k) r=m;
            else l=m+1;
        }
        return l;
    }
    int up_bound(int k)
    {
        int l=1,r=n+1;
        while(l<r)
        {
            int m=l+(r-l)/2;
            if(a[m]<=k) l=m+1;
            else r=m;
        }
        return l;
    }
     
    int main()
    {
        int i,j,x;
        scanf("%d%d",&n,&m);
        for(i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
        }
        sort(a+1,a+n+1);  //逗比了、没排序、一直WA、受不了= =
        while(m--)
        {
            int op,x;
            scanf("%d%d",&op,&x);
            if(op==1 && a[1]>=x || op==2 && a[n]<=x)
            {
                cout<<-1<<endl;
                continue;
            }
            if(op==1)
            {
                int ans=low_bound(x);
                ans--;
                cout<<a[ans]<<endl;
            }
            else
            {
                int ans=up_bound(x);
                cout<<a[ans]<<endl;
            }
        }
        return 0;
    }
    趁着还有梦想、将AC进行到底~~~by 452181625
  • 相关阅读:
    [校内模拟赛T3]火花灿灿_二分答案_组合数学_贪心
    [loj#539][LibreOJ NOIP Round #1]旅游路线_倍增_dp
    [loj#2005][SDOI2017]相关分析 _线段树
    [bzoj3162]独钓寒江雪_树hash_树形dp
    [bzoj2746][HEOI2012]旅行问题 _AC自动机_倍增
    [bzoj2597][Wc2007]剪刀石头布_费用流
    [bzoj4818][Sdoi2017]序列计数_矩阵乘法_欧拉筛
    vue中的组件传值
    vue中的修饰符
    箭头函数递归斐波那契数列
  • 原文地址:https://www.cnblogs.com/hate13/p/4044705.html
Copyright © 2011-2022 走看看