Submission #249807

#TimeUsernameProblemLanguageResultExecution timeMemory
249807hhh07Detecting Molecules (IOI16_molecules)C++14
69 / 100
54 ms3448 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <utility>
#include <set>
#include <cmath>
#include <climits>
#include <cstring>
 
using namespace std;
 
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> ii;
 
vi find_subset(int l, int u, vi w){   
    vi result;
    int n = w.size();
    ii x[n];
    for (int i = 0; i < n; i++)
        x[i] = {w[i], i};
    sort(x, x + n);
    
    int s = 0, curr = 0;
  	bool t = false;
    for (int i = 0; i < n; i++){
        w[i] = x[i].first;
        s += w[i];
        curr = i;
        if (s >= l && s <= u){
            for (int j = 0; j <= i; j++)
                result.push_back(x[j].second);
            return result;
        }
        if (s >= l){
            s -= w[i];
          	t = true;
            break;
        }
    }
    if (!t)
      return result;
    for (int i = curr; i < n; i++){
        w[i] = x[i].first;
        s += w[i] - w[i - curr];
        if (s >= l && s <= u){
            for (int j = i - curr + 1; j <= i; j++)
                result.push_back(x[j].second);
            break;
        }
    }
    return result;
}
#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...