726代码
2025-07-27 10:50:30
发布于:浙江
#include<bits/stdc++.h>
using namespace std;
const int N=100010;
int a[N];
int mi[N];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
memset(mi,0x3f,sizeof(mi));
for(int i=1;i<=n;i++){
mi[i]=min(a[i],mi[i-1]);
}
int ans=0;
for(int i=1;i<=n;i++){
ans=max(ans,a[i]-mi[i]);
}
cout<<ans;
}
递归示例
void f(int n){
if(n==0)return ;
f(n/2);
cout<<n%2;
}
#include <bits/stdc++.h>
using namespace std;
const int N = 200010;
#define ll long long
ll n,m;
ll a[N];
ll b[N];
bool check(ll mid){
ll sum=0;
for(int i=1;i<=n;i++){
if(mid-a[i]>b[i]) return false;
sum+=max(mid-a[i],0ll);
}
return sum<=m;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++) cin>>b[i];
ll l=0,r=20000000000000000;
ll ans=0;
while(l<=r){
ll mid=(l+r)/2;
if(check(mid)){
l=mid+1;
ans=mid;
}
else{
r=mid-1;
}
}
cout<<ans<<endl;
}
这里空空如也
有帮助,赞一个