Submission #123609

#TimeUsernameProblemLanguageResultExecution timeMemory
123609Nodir_BobievDetecting Molecules (IOI16_molecules)C++14
10 / 100
2 ms396 KiB
# include <iostream>
# include <vector>
# include <algorithm>

using namespace std;

vector< int > find_subset( int l, int u, vector < int > w )
{
    vector < pair < int, int > > vc;
    int n = 0;

    for( auto c: w )vc.push_back( make_pair( c, n++) );
    sort( vc.begin(), vc.end() );

    long long sm = 0;
    vector < int > ans;

    for( int i = n - 1; i >= 0; i -- ){
        sm += vc[i].first;
        ans.push_back( vc[i].second );
        if( sm > u )   break;
        if( sm >= l )  return ans;
    }
    for( int i = 0; i < n - ans.size(); i ++ ){
        if( sm >= l && sm <= u ) break;
        sm -= vc[ ans[i] ].first - vc[i].first;
        ans[i] = vc[i].second;
    }
    if( sm < l || u < sm )
        ans.clear();
    return ans;
}
/*
int main()
{
    vector < int > ret = find_subset( 10, 20, {15,17,16,18} );
    for( auto c: ret) {
        cout << c << ' ';
    }
    return 0;
}
*/

Compilation message (stderr)

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:24:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for( int i = 0; i < n - ans.size(); i ++ ){
                     ~~^~~~~~~~~~~~~~~~
#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...