Submission #575532

#TimeUsernameProblemLanguageResultExecution timeMemory
575532jasminDetecting Molecules (IOI16_molecules)C++17
0 / 100
1 ms212 KiB
#include<bits/stdc++.h>
#include "molecules.h"
using namespace std;

bool construct(vector<pair<int,int> >& range, vector<pair<int,int> >& a, vector<int>& sol, int left, int right){
    int n=a.size();
    int x=0;
    int i=0;

    reverse(range.begin(), range.end()); //=> aufsteigend
    reverse(a.begin(), a.end()); //=> aufsteigend
    /*for(auto e: a){
        cout << e.first << " " << e.second << "\n";
    }
    cout << "=====\n";
    for(auto e: range){
        cout << e.first << " " << e.second << "\n";
    }
    cout << ":::::::::::::::::::::::::\n";*/
    for(int j=0; j<n; j++){
        if(range[j].second<x) continue;
        if(x<range[j].first) return false;

        int l=range[j].first;
        int r=range[j].second;
        while(i<=j && x<l+(a[j].first-a[i].first)){
            //cout << j << " " << i << "\n";
            i++;
        }
        //cout << x << " " << range[j].first << " " << range[j].second << " " << a[i].first << "\n";
        sol.push_back(a[i].second);
        x+=a[i].first;
        i++;
    }
    return true;
}

vector<int> find_subset(int l, int r, vector<int> a){
    int n=a.size();
    vector<pair<int,int> > b(n);
    for(int i=0; i<n; i++){
        b[i]={a[i], i};
    }
    sort(b.begin(), b.end());
    reverse(b.begin(), b.end());

    vector<pair<int,int> > range(n+1, {l, r});
    for(int i=1; i<=n; i++){
        range[i].first=range[i-1].first-b[i-1].first;
        range[i].second=range[i-1].second-b[n-i].first;
        if(range[i].second<0) break;
    }

    /*for(auto e: range){
        cout << e.first << " " << e.second << "\n";
    }*/
    
    vector<int> sol;
    if(construct(range, b, sol, l, r)){
        return sol;
    }
    return {};
}

/*signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int n, l, r;
    cin >> n >> l >> r;
    vector<int> a(n);
    for(int i=0; i<n; i++){
        cin >> a[i];
    }
    vector<int> sol=find_subset(l, r, a);
    for(auto e: sol){
        cout << e << " ";
    }
    cout << "\n";
}*/

Compilation message (stderr)

molecules.cpp: In function 'bool construct(std::vector<std::pair<int, int> >&, std::vector<std::pair<int, int> >&, std::vector<int>&, int, int)':
molecules.cpp:25:13: warning: unused variable 'r' [-Wunused-variable]
   25 |         int r=range[j].second;
      |             ^
#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...