1 条题解

  • 0
    @ 2023-9-23 16:03:16
    #include<bits/stdc++.h>
    using namespace std;
    int n;
    struct X{
    	int a,b;//商店时间、网购时间 
    };
    X arr[100000+5];
    //比较函数、返回两个参数的顺序是否合法(严格偏序) 
    bool cmp(X x,X y){
    	if(x.b<y.b)
    		return true;
    	else
    		return false; 
    } 
    //sum[i] 后缀和:arr[i]~arr[n] 的 a 之和
    long long sum[100000+5]; 
    int main()
    {
    	cin>>n;
    	for(int i=1;i<=n;i++)
    		cin>>arr[i].a;
    	for(int i=1;i<=n;i++)
    		cin>>arr[i].b;
    		
    	sort(arr+1,arr+n+1,cmp);
    	
    	for(int i=n;i>=1;i--)
    		sum[i] = sum[i+1]+arr[i].a;
    		
    	long long ans = sum[1];//全都在线下商店购买
    	for(int i=1;i<=n;i++)
    	{
    		//arr[1]~arr[i] 都网购的情况
    		long long now = max((long long)arr[i].b,sum[i+1]);
    		ans = min(ans,now); 
    	} 
    
    	cout<<ans<<"\n";
    	return 0;
    }
    
    
    • 1

    信息

    ID
    1132
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    61
    已通过
    22
    上传者