This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include "swap.h"
#define ff first
#define ss second
#define pb push_back
#define all(x) x.begin(),x.end()
using namespace std;
const int N=1e5+5;
int sz[N];
multiset <int> ms;
int n;
void init(int N, int M,vector<int> U,vector<int> V,vector<int> W) {
    n=N;
    for(int i=0;i<M;i++){
        sz[V[i]]=W[i];
        ms.insert(sz[V[i]]);
    }
}
int getMinimumFuelCapacity(int X, int Y) {
    if(n<=3)return -1;
    int ans=0;
    if(sz[X]!=0)ms.erase(ms.find(sz[X]));
    if(sz[Y]!=0)ms.erase(ms.find(sz[Y]));
    if(X==0 or Y==0 ){
        ans=max({sz[X],sz[Y],*ms.begin()});
        int x=*ms.begin();
        ms.erase(ms.begin());
        ans=max(ans,*ms.begin());
        if(sz[X]!=0)ms.insert(sz[X]);
        if(sz[Y]!=0)ms.insert(sz[Y]);
        ms.insert(x);
    }
    else{
        ans=max({sz[X],sz[Y],*ms.begin()});
        ms.insert(sz[X]);
        ms.insert(sz[Y]);
    }
    return ans;
}
/*signed main(){
    ios_base::sync_with_stdio();
    cin.tie(0);cout.tie(0);
    int n,m;
    cin>>n>>m;
    vector <int> a(m),b(m),c(m);
    for(int i=0;i<m;i++){
        cin>>a[i]>>b[i]>>c[i];
    }
    init(n,m,a,b,c);
    int q;
    cin>>q;
    while(q--){
        int u,v;
        cin>>u>>v;
        cout<<getMinimumFuelCapacity(u,v)<<"\n";
    }
}*/
/*
 3
 1 10
 3 10
 8 15
 
2
1 2
2 3
*/
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |