• 【codeforces 572A】Arrays


    time limit per test2 seconds
    memory limit per test256 megabytes
    inputstandard input
    outputstandard output
    You are given two arrays A and B consisting of integers, sorted in non-decreasing order. Check whether it is possible to choose k numbers in array A and choose m numbers in array B so that any number chosen in the first array is strictly less than any number chosen in the second array.

    Input
    The first line contains two integers nA, nB (1 ≤ nA, nB ≤ 105), separated by a space — the sizes of arrays A and B, correspondingly.

    The second line contains two integers k and m (1 ≤ k ≤ nA, 1 ≤ m ≤ nB), separated by a space.

    The third line contains nA numbers a1, a2, … anA ( - 109 ≤ a1 ≤ a2 ≤ … ≤ anA ≤ 109), separated by spaces — elements of array A.

    The fourth line contains nB integers b1, b2, … bnB ( - 109 ≤ b1 ≤ b2 ≤ … ≤ bnB ≤ 109), separated by spaces — elements of array B.

    Output
    Print “YES” (without the quotes), if you can choose k numbers in array A and m numbers in array B so that any number chosen in array A was strictly less than any number chosen in array B. Otherwise, print “NO” (without the quotes).

    Examples
    input
    3 3
    2 1
    1 2 3
    3 4 5
    output
    YES
    input
    3 3
    3 3
    1 2 3
    3 4 5
    output
    NO
    input
    5 2
    3 1
    1 1 1 1 1
    2 2
    output
    YES
    Note
    In the first sample test you can, for example, choose numbers 1 and 2 from array A and number 3 from array B (1 < 3 and 2 < 3).

    In the second sample test the only way to choose k elements in the first array and m elements in the second one is to choose all numbers in both arrays, but then not all the numbers chosen in A will be less than all the numbers chosen in B: .

    【题目链接】:http://codeforces.com/contest/572/problem/A

    【题解】

    比较a[k]和b[nb-m+1]就好;
    如果小于就可以(选最小的k个和最大的m个);

    【完整代码】

    #include <bits/stdc++.h>
    using namespace std;
    #define lson l,m,rt<<1
    #define rson m+1,r,rt<<1|1
    #define LL long long
    #define rep1(i,a,b) for (int i = a;i <= b;i++)
    #define rep2(i,a,b) for (int i = a;i >= b;i--)
    #define mp make_pair
    #define pb push_back
    #define fi first
    #define se second
    #define rei(x) scanf("%d",&x)
    #define rel(x) scanf("%I64d",&x)
    
    typedef pair<int,int> pii;
    typedef pair<LL,LL> pll;
    
    const int MAXN = 1e5+100;
    const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
    const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
    const double pi = acos(-1.0);
    
    int na,nb,k,m;
    int a[MAXN],b[MAXN];
    
    int main()
    {
        //freopen("F:\rush.txt","r",stdin);
        rei(na);rei(nb);
        rei(k);rei(m);
        rep1(i,1,na)
            rei(a[i]);
        rep1(i,1,nb)
            rei(b[i]);
        if (a[k] < b[nb-m+1])
            puts("YES");
        else
            puts("NO");
    
        return 0;
    }
  • 相关阅读:
    Oracle----oracle编程总结
    Oracle----oracle 事务总结
    Oracle----Oracle 11g XE release2安装与指导
    KMP之Z-function (扩展kmp)
    pkg-config
    对拍
    GPU并行编程小结
    DPHARD
    贪心/字符串好题
    树专题(伸展树 / 树链剖分 / 动态树 学习笔记)
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7626779.html
Copyright © 2020-2023  润新知