cplib

This documentation is automatically generated by competitive-verifier/competitive-verifier

View the Project on GitHub NEET-6z/cplib

:warning: src/util/top2id_chmin.hpp

Depends on

Code

#include "../template.hpp"


//[val, id], idが被らないように小さい方から2つを保持する
template<typename T> bool top2id_chmin(pair<pair<T,T>,pair<T,T>> &p,pair<T,T> x){
    if(p.fi.se==x.se){
        if(p.fi.fi>x.fi){
            p.fi.fi=x.fi;
            return 1;
        }
    }
    else if(p.se.se==x.se){
        if(p.se.fi>x.fi){
            p.se.fi=x.fi;
            if(p.fi.fi>p.se.fi) swap(p.fi,p.se);
            return 1;
        }
    }
    else{
        if(p.fi.fi>x.fi){
            p.se=p.fi;
            p.fi=make_pair(x.fi,x.se);
        }
        if(p.se.fi>x.fi){
            p.se=make_pair(x.fi,x.se);
            if(p.fi.fi>p.se.fi) swap(p.fi,p.se);
        }
        return 1;
    }
    return 0;
}
#line 2 "src/template.hpp"
#include <bits/stdc++.h>
using namespace std;
#define si(a) (long)a.size()
#define fi first
#define se second
#define all(x) x.begin(),x.end()
#define rep(i,n) for(int i=0;i<(int)(n);++i)
template<typename S,typename F> bool chmin(S&a,F b){return b<a?(a=b,1):0;}
template<typename S,typename F> bool chmax(S&a,F b){return b>a?(a=b,1):0;}
bool _=(ios::sync_with_stdio(0),cin.tie(0),cout<<fixed<<setprecision(16),0);
#line 2 "src/util/top2id_chmin.hpp"


//[val, id], idが被らないように小さい方から2つを保持する
template<typename T> bool top2id_chmin(pair<pair<T,T>,pair<T,T>> &p,pair<T,T> x){
    if(p.fi.se==x.se){
        if(p.fi.fi>x.fi){
            p.fi.fi=x.fi;
            return 1;
        }
    }
    else if(p.se.se==x.se){
        if(p.se.fi>x.fi){
            p.se.fi=x.fi;
            if(p.fi.fi>p.se.fi) swap(p.fi,p.se);
            return 1;
        }
    }
    else{
        if(p.fi.fi>x.fi){
            p.se=p.fi;
            p.fi=make_pair(x.fi,x.se);
        }
        if(p.se.fi>x.fi){
            p.se=make_pair(x.fi,x.se);
            if(p.fi.fi>p.se.fi) swap(p.fi,p.se);
        }
        return 1;
    }
    return 0;
}
Back to top page