[蓝桥杯 2022 国 B] 卡牌

发布时间 2023-07-19 11:39:55作者: nasia

题目描述

这天,小明在整理他的卡牌。

他一共有 \(n\) 种卡牌,第 \(i\) 种卡牌上印有正整数数 \(i(i \in[1, n])\), 且第 \(i\) 种卡牌现有 \(a_{i}\) 张。

而如果有 \(n\) 张卡牌,其中每种卡牌各一张,那么这 \(n\) 张卡牌可以被称为一套牌。小明为了凑出尽可能多套牌,拿出了 \(m\) 张空白牌, 他可以在上面写上数 \(i\),将其当做第 \(i\) 种牌来凑出套牌。然而小明觉得手写的牌不太美观,决定第 \(i\) 种牌最多手写 \(b_{i}\) 张。

请问小明最多能凑出多少套牌?

输入格式

输入共 3 行,第一行为两个正整数 \(n\)\(m\)

第二行为 \(n\) 个正整数 \(a_{1}, a_{2}, \ldots, a_{n}\)

第三行为 \(n\) 个正整数 \(b_{1}, b_{2}, \ldots, b_{n}\)

输出格式

一行,一个整数表示答案。

样例 #1

样例输入 #1

4 5
1 2 3 4
5 5 5 5

样例输出 #1

3

提示

【样例说明】

\(5\) 张空白牌中,拿 \(2\) 张写 \(1\),拿 \(1\) 张写 \(2\),这样每种牌的牌数就变为了 \(3,3,3,4\),可以凑出 \(3\) 套牌,剩下 \(2\) 张空白牌不能再帮助小明凑出一套。

code:

/*!
**************************************
*        # C/C++代码混淆器 #      嗨嗨嗨,想copy 代码?没门(被打
*
*  Copyright (C) https://foxzzz.com
**************************************
*/
#define B84 n,a[2000002],b[2000002],m;
#define B83 max(x-a[i],long(0));
#define B82 scanf("%ld",&a[i]);
#define B81 scanf("%ld",&b[i]);
#define B80 printf("%ld",ans);
#define B7F max(b[i]+a[i],r);
#define B7E 1;i<=n;i++){
#define B7D min(a[i],l);
#define B7C ___0xffff___
#define B7B (get(mid)){
#define B7A 0x64b8abe7
#define B79 cin>>n>>m;
#define B78 0x64b75a2b
#define B77 namespace
#define B76 INT_MAX,r
#define B75 0x81,ans;
#define B74 get(int
#define B73 for(int
#define B72 while(l
#define B71 printf
#define B70 return
#define B6F (b[i]
#define B6E r)/2;
#define B6D using
#define B6C 0x3a
#define B6B 0x61
#define B6A 0x62
#define B69 0x63
#define B68 0x64
#define B67 0x65
#define B66 0x66
#define B65 0x68
#define B64 0x6d
#define B63 0x6f
#define B62 0x70
#define B61 0x73
#define B60 0x74
#define B5F 0x78
#define B5E 0xa7
#define B5D 0xa8
#define B5C 0xaa
#define B5B 0xb1
#define B5A 0xb4
#define B59 0xb5
#define B58 0xb7
#define B57 0xb9
#define B56 0xbc
#define B55 0xc1
#define B54 0xc2
#define B53 0xc3
#define B52 0xc6
#define B51 0xc7
#define B50 0xc8
#define B4F 0xca
#define B4E 0xcb
#define B4D 0xcc
#define B4C 0xce
#define B4B 0xcf
#define B4A 0xd0
#define B49 0xd1
#define B48 0xd2
#define B47 0xd3
#define B46 0xd4
#define B45 0xd5
#define B44 0xd7
#define B43 0xda
#define B42 0x23
#define B41 0xdf
#define B40 0xe7
#define B3F 0xe8
#define B3E 0xeb
#define B3D 0xf7
#define B3C 0xf8
#define B3B 0xfa
#define B3A 0xfd
#define B39 a[i]
#define B38 bool
#define B37 char
#define B36 else
#define B35 if(s
#define B34 long
#define B33 main
#define B32 mid;
#define B31 0xde
#define B30 "%s"
#define B2F "\n"
#define B2E 0x20
#define B2D 0x2d
#define B2C std;
#define B2B time
#define B2A 0x2e
#define B29 0x2f
#define B28 mid
#define B27 int
#define B26 (){
#define B25 0x0
#define B24 r){
#define B23 ans
#define B22 0xa
#define B21 x){
#define B20 >=
#define B1F +=
#define B1E if
#define B1D d,
#define B1C <=
#define B1B m)
#define B1A (l
#define B19 &&
#define B18 0;
#define B17 1;
#define B16 x)
#define B15 )
#define B14 c
#define B13 ;
#define B12 0
#define B11 (
#define B10 d
#define BF e
#define BE r
#define BD [
#define BC <
#define BB ]
#define BA s
#define B9 ,
#define B8 a
#define B7 i
#define B6 l
#define B5 b
#define B4 =
#define B3 >
#define B2 +
#define B1 {
#define B0 }
#include <time.h>
#include <bits/stdc++.h>
#define B85 B6D B77 B2C B34 B84 B38 B74 B21 B34 BA
#define B86 B4 B18 B73 B7 B4 B7E B1E B6F B2 B39
#define B87 B20 B16 BA B1F B83 B36 B70 B18 B0 B35
#define B88 B1C B1B B70 B17 B70 B18 B0 B27 B7C B26
#define B89 B79 B34 B6 B4 B76 B4 B75 B73 B7 B4
#define B8A B7E B82 B6 B4 B7D B0 B73 B7 B4 B7E
#define B8B B81 BE B4 B7F B0 B72 BC B24 B27 B28
#define B8C B4 B1A B2 B6E B1E B7B B23 B4 B32 B6
#define B8D B4 B28 B2 B17 B0 B36 BE B4 B32 B0
#define B8E B80 B70 B18 B0 B27 B33 B11 B15 B1 B1E
#define B8F B11 B2B B11 B12 B15 B3 B78 B19 B2B B11
#define B90 B12 B15 BC B7A B15 B1 B7C B11 B15 B13
#define B91 B0 B36 B1 B37 B8 BD BB B4 B1 B11
#define B92 B37 B15 B42 B9 B11 B37 B15 B2E B9 B11
#define B93 B37 B15 B5A B9 B11 B37 B15 B3B B9 B11
#define B94 B37 B15 B54 B9 B11 B37 B15 B3E B9 B11
#define B95 B37 B15 B4F B9 B11 B37 B15 B5B B9 B11
#define B96 B37 B15 B4A B9 B11 B37 B15 B5E B9 B11
#define B97 B37 B15 B57 B9 B11 B37 B15 B3A B9 B11
#define B98 B37 B15 B52 B9 B11 B37 B15 B43 B9 B11
#define B99 B37 B15 B48 B9 B11 B37 B15 B49 B9 B11
#define B9A B37 B15 B4C B9 B11 B37 B15 B31 B9 B11
#define B9B B37 B15 B58 B9 B11 B37 B15 B5D B9 B11
#define B9C B37 B15 B46 B9 B11 B37 B15 B4E B9 B11
#define B9D B37 B15 B4A B9 B11 B37 B15 B4A B9 B11
#define B9E B37 B15 B2E B9 B11 B37 B15 B42 B9 B11
#define B9F B37 B15 B25 B0 B13 B37 B5 BD BB B4
#define BA0 B1 B11 B37 B15 B42 B9 B11 B37 B15 B2E
#define BA1 B9 B11 B37 B15 B50 B9 B11 B37 B15 B40
#define BA2 B9 B11 B37 B15 B4A B9 B11 B37 B15 B3F
#define BA3 B9 B11 B37 B15 B56 B9 B11 B37 B15 B4D
#define BA4 B9 B11 B37 B15 B4A B9 B11 B37 B15 B3C
#define BA5 B9 B11 B37 B15 B4F B9 B11 B37 B15 B57
#define BA6 B9 B11 B37 B15 B47 B9 B11 B37 B15 B53
#define BA7 B9 B11 B37 B15 B51 B9 B11 B37 B15 B3E
#define BA8 B9 B11 B37 B15 B55 B9 B11 B37 B15 B5C
#define BA9 B9 B11 B37 B15 B4B B9 B11 B37 B15 B59
#define BAA B9 B11 B37 B15 B44 B9 B11 B37 B15 B3D
#define BAB B9 B11 B37 B15 B45 B9 B11 B37 B15 B41
#define BAC B9 B11 B37 B15 B2E B9 B11 B37 B15 B42
#define BAD B9 B11 B37 B15 B25 B0 B13 B37 B14 BD
#define BAE BB B4 B1 B11 B37 B15 B2D B9 B11 B37
#define BAF B15 B2D B9 B11 B37 B15 B2E B9 B11 B37
#define BB0 B15 B65 B9 B11 B37 B15 B60 B9 B11 B37
#define BB1 B15 B60 B9 B11 B37 B15 B62 B9 B11 B37
#define BB2 B15 B61 B9 B11 B37 B15 B6C B9 B11 B37
#define BB3 B15 B29 B9 B11 B37 B15 B29 B9 B11 B37
#define BB4 B15 B69 B9 B11 B37 B15 B63 B9 B11 B37
#define BB5 B15 B68 B9 B11 B37 B15 B67 B9 B11 B37
#define BB6 B15 B66 B9 B11 B37 B15 B63 B9 B11 B37
#define BB7 B15 B5F B9 B11 B37 B15 B2A B9 B11 B37
#define BB8 B15 B60 B9 B11 B37 B15 B6B B9 B11 B37
#define BB9 B15 B63 B9 B11 B37 B15 B6A B9 B11 B37
#define BBA B15 B6B B9 B11 B37 B15 B63 B9 B11 B37
#define BBB B15 B2A B9 B11 B37 B15 B69 B9 B11 B37
#define BBC B15 B63 B9 B11 B37 B15 B64 B9 B11 B37
#define BBD B15 B2E B9 B11 B37 B15 B2D B9 B11 B37
#define BBE B15 B2D B9 B11 B37 B15 B22 B9 B11 B37
#define BBF B15 B25 B0 B13 B37 B10 BD BB B4 B30
#define BC0 B13 B37 BF BD BB B4 B2F B13 B71 B11
#define BC1 B1D B8 B15 B13 B71 B11 BF B15 B13 B71
#define BC2 B11 B1D B5 B15 B13 B71 B11 BF B15 B13
#define BC3 B71 B11 B1D B14 B15 B13 B0 B70 B18 B0
#define BC4 B85 B86 B87 B88 B89 B8A B8B B8C B8D B8E
#define BC5 B8F B90 B91 B92 B93 B94 B95 B96 B97 B98
#define BC6 B99 B9A B9B B9C B9D B9E B9F BA0 BA1 BA2
#define BC7 BA3 BA4 BA5 BA6 BA7 BA8 BA9 BAA BAB BAC
#define BC8 BAD BAE BAF BB0 BB1 BB2 BB3 BB4 BB5 BB6
#define BC9 BB7 BB8 BB9 BBA BBB BBC BBD BBE BBF BC0
#define BCA BC1 BC2 BC3 
#define BCB BC4 BC5 BC6 BC7 BC8 BC9 BCA 
#define BCC(__FOX__) __FOX__
BCC(BCB)
#include <bits/stdc++.h>
using namespace std;
long n,a[2000002],b[2000002],m;//一定要开long!
bool get(int x){
    long s = 0;
    for(int i = 1;i<=n;i++){
        if (b[i] + a[i] >= x) s += max(x-a[i],long(0));
        else return 0;
    }
    if(s <= m) return 1;
    return 0;
}
int main(){
    cin>>n>>m;
    long l = INT_MAX,r = 0x81,ans;
    for(int i = 1;i<=n;i++){
		scanf("%ld",&a[i]);
        l = min(a[i],l);
    }
    for(int i = 1;i<=n;i++){
		scanf("%ld",&b[i]);
        r = max(b[i]+a[i],r);
    }	
    while(l < r){
        int mid = (l + r)/2;
        if (get(mid)){
            ans = mid;
            l = mid + 1;
        }
        else r = mid;
    }
    printf("%ld",ans);
    return 0;
}