八十分求助
查看原帖
八十分求助
730420
jabberwocky楼主2023/4/2 17:33
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <unordered_map>
#include <stack>
#include <math.h>
#include <queue>
#include <string>
#define x first
#define y second
//#define endl '\n'
#define rep(a, b, i) for (int i = a; i < b; i++)
#define rev(a, b, i) for (int i = a; i > b; i--)
#define bug(a) cout << a << endl
#define bug2(a, b) cout << a << " " << b << endl
#define bug3(a, b, c) cout << a << " " << b << " " << c << endl
#define read(a) cin>>a
#define read2(a,b) cin>>a>>b
#define read3(a,b,c) cin>>a>>b>>c 
#define int long long

using namespace std;

typedef pair<int, int> pii;
typedef long long ll;
const int N = 2e5+10, mod = 1e9+7, M = 5e5+10;

int n,m,k,idx=1;
int flag=0;
struct c{
	int a,b;
}a[N];
bool cmp(c x,c y){
	return x.a<y.a;
}
void solve(){
	cin>>n>>m;
	rep(1,n+1,i)cin>>a[i].a;
	rep(1,n+1,i)cin>>a[i].b;
	int mint=0x3f3f3f3f3f3f3f3f,ans=0,cst=0;
	sort(a+1,a+1+n,cmp);
	rep(1,n+1,i){
		mint=min(mint,a[i].a+a[i].b);
		ans=max(ans,a[i].a);
		cst+=((i-1)*(a[i].a-a[i-1].a));
		if((cst+(i*(a[i+1].a-a[i].a)))>=m){
			ans+=((m-cst)/(i));
			break;
		}
		if(ans>=mint){
			ans=mint;
			break;
		}
	}
	cout<<ans;
	return;
}


signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	int T;
	// cin>>T;
	// while(T--)
	solve();
	
	return 0;
}
2023/4/2 17:33
加载中...