eolymp
bolt
Try our new interface for solving problems
Problems

The best team

published at 2/8/24, 10:57:35 am

include <bits/stdc++.h>

define ll long long

define ld long double

using namespace std; int main(){

iosbase::syncwith_stdio(0); cin.tie(0); cout.tie(0); ll n, m, mx = -1, u = 1; cin>>n>>m; vector<ll>v; for(int i = 0; i<n; i++){ ll k ; cin>>k; if(k<m) v.push_back(k); } sort(v.begin(), v.end()); ll h = v[v.size()-u], l = v[0]; for(int i = 0; i<v.size(); i++){ if(h+l>mx && h+l<=m) mx = max(mx, h+l); if(h+l>m){ u++; h = v[v.size()-u]; } l = v[i]; } cout<<mx;

}

published at 2/8/24, 11:24:39 am

include <bits/stdc++.h>

using namespace std; int main(){

ios_base::sync_with_stdio(false);
cin.tie(NULL);cout.tie(NULL);
 long long n,m;
cin>>n>>m;
vector<long>v,v1(n);
for(long i=0;i<n;i++){
    long a;cin>>a;
    if(a<m) v.emplace_back(a);
}

sort(v.begin(),v.end()); //3 4 5 5 6 if(v[0] + v[1] > m){ cout<<-1<<'\n'; return 0; } long l = 0,r=v.size()-1,mid=-1000000001; while(l<r){ if(v[l] + v[r] > m){ r--; } else{ l++; } if(v[r] + v[l] <= m && mid <= v[r] + v[l]) mid = v[r] + v[l]; } cout<<mid<<'\n';

}