| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 165434 | Segtree | Detecting Molecules (IOI16_molecules) | C++14 | 164 ms | 21436 KiB | 
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<iostream>
#include<algorithm>
#include<vector>
#include<unordered_map>
#include"molecules.h"
using namespace std;
typedef long long ll;
vector<int> ans;
unordered_map<int,vector<int> >mas;
void exch(){
    for(int i=0;i<ans.size();i++){
	ll x=ans[i];
	ans[i]=mas[x].back();
	mas[x].pop_back();
    }
}
vector<int> find_subset(int l,int r,vector<int> w){
    int n=w.size();
    for(int i=0;i<n;i++){
	mas[w[i]].push_back(i);
    }
    sort(w.begin(),w.end());
    ll suml=0,sumr=0,x=-1;
    for(int i=0;i<n;i++){
	suml+=w[i];
	sumr+=w[n-1-i];
	if(suml<=r&&l<=sumr){
	    x=i+1;
	    break;
	}
    }
    if(x==-1)return ans;
    for(int i=0;i<x;i++)ans.push_back(w[i]);
    if(l<=suml&&suml<=r){
	exch();
	return ans;
    }
    for(int i=x-1;i>=0;i--){
	suml-=ans[i];
	suml+=w[n-x+i];
	ans[i]=w[n-x+i];
	if(l<=suml&&suml<=r){
	    exch();
	    return ans;
	}
    }
    cout<<1/0<<endl;
    return ans;
}
Compilation message (stderr)
| # | 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... | ||||
