Submission #377332

#TimeUsernameProblemLanguageResultExecution timeMemory
377332rrrr10000Detecting Molecules (IOI16_molecules)C++14
100 / 100
183 ms10496 KiB
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> P;
typedef tuple<ll,ll,ll> PP;
typedef vector<ll> vi;
typedef vector<vi> vvi;
typedef vector<P> vp;
typedef vector<bool> vb;
#define rep(i,n) for(ll i=0;i<(ll)(n);i++)
#define REP(i,k,n) for(ll i=(ll)(k);i<(ll)(n);i++)
#define fi first
#define se second
#define all(a) a.begin(),a.end()
#define rosrt(a) {sort(all(a));reverse(all(a));}
#define dupli(a) {sort(all(a));a.erase(unique(all(a)),a.end());}
#define lb(v,k) (lower_bound(all(v),k)-v.begin())
template<class T> bool chmin(T&a,T b){if(a>b){a=b;return true;}return false;}
template<class T> bool chmax(T&a,T b){if(a<b){a=b;return true;}return false;}
template<class T> void out(T a){cout<<a<<'\n';}
template<class T> void outv(T v){rep(i,v.size()){if(i)cout<<' ';cout<<v[i];};cout<<'\n';}
template<class T> void outvv(T v){for(auto x:v)outv(x);}
template<class T> void outp(T p){cout<<'('<<p.fi<<','<<p.se<<')'<<endl;}
template<class T> void outvp(T v){for(auto x:v)cout<<'('<<x.fi<<','<<x.se<<')';cout<<endl;}
#include "molecules.h"
vector<int> find_subset(int a,int b,vector<int> w){
    int n=w.size();
    vp v(n);
    rep(i,n)v[i]=P(w[i],i);
    sort(all(v));
    vi ruil(n),ruir(n);
    rep(i,n){
        ruil[i]=v[i].fi;
        if(i)ruil[i]+=ruil[i-1];
    }
    for(int i=n-1;i>=0;i--){
        ruir[i]=v[i].fi;
        if(i!=n-1)ruir[i]+=ruir[i+1];
    }
    rep(i,n){
        if(ruil[i]<=b&&ruir[n-i-1]>=a){
            ll sum=ruil[i];
            int l=i+1;
            rep(j,i+1){
                if(sum>=a)break;
                sum-=v[i-j].fi;
                sum+=v[n-j-1].fi;
                l--;
            }
            vector<int> res(i+1);
            rep(j,i+1){
                if(j<l)res[j]=v[j].se;
                else res[j]=v[n-(j-l)-1].se;
            }
            return res;
        }
    }
    vector<int> res(0);
    return res;
}/*
int main(){
    ll n;cin>>n;
    vector<int> v(n);rep(i,n)cin>>v[i];
    ll a,b;cin>>a>>b;
    outv(find_subset(a,b,v));
}*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...