제출 #1019533

#제출 시각아이디문제언어결과실행 시간메모리
1019533huutuanDetecting Molecules (IOI16_molecules)C++14
69 / 100
32 ms5580 KiB
#include "molecules.h"

#include <bits/stdc++.h>

using namespace std;

vector<int> find_subset(int l, int u, vector<int> w) {
   vector<pair<int, int>> v;
   int n=w.size();
   for (int i=0; i<n; ++i) v.emplace_back(w[i], i);
   sort(v.begin(), v.end());
   vector<int> ans;
   for (int sz=1, pf=0, sf=0; sz<=n; ++sz){
      pf+=v[sz-1].first;
      sf+=v[n-sz].first;
      if (l<=pf && pf<=u){
         for (int i=0; i<sz; ++i) ans.push_back(v[i].second);
         break;
      }
      if (l<=sf && sf<=u){
         for (int i=n-sz; i<n; ++i) ans.push_back(v[i].second);
         break;
      }
      if (pf<=l && u<=sf){
         int cur=pf, r=n-1;
         for (int i=sz-1; i>=0; --i){
            if (cur+v[r].first-v[i].first<l){
               cur+=v[r].first-v[i].first;
               ans.push_back(v[r].second);
               --r;
            }else{
               int id=i;
               while (cur+v[id].first-v[i].first<l) ++id;
               ans.push_back(v[id].second);
               cur+=v[id].first-v[i].first;
            }
         }
         break;
      }
   }
   return ans;
}
#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...