Submission #344826

#TimeUsernameProblemLanguageResultExecution timeMemory
344826ogibogi2004Detecting Molecules (IOI16_molecules)C++14
100 / 100
109 ms16468 KiB
#include "molecules.h" #include <bits/stdc++.h> using namespace std; #define ll long long vector<int> find_subset(int l, int u, vector<int> w) { ll t=0; vector<pair<ll,ll> >da; ll l1=l,u1=u; for(int i=0;i<w.size();i++) { da.push_back({w[i],i}); } sort(da.begin(),da.end()); ll j=-1; for(ll i=0;i<da.size();i++) { t+=da[i].first; if(t>u1)break; j=i; } if(j==-1)return vector<int>(0); t=0; for(ll i=0;i<=j&&i<da.size();i++) { t+=da[i].first; } ll f=0; for(int i=da.size()-1;i>=da.size()-j-1&&i>=0;i--) { f+=da[i].first; } if(t>u1||f<l1) { return vector<int>(0); } set<int>ivan; set<int>not_taken; for(ll i=0;i<=j&&i<da.size();i++)ivan.insert(i); for(ll i=j+1;i<da.size();i++)not_taken.insert(i); while(t<l1) { if(ivan.size()==0||not_taken.size()==0) { return vector<int>(0); } ll i1=(*ivan.begin()); ll i2=(*not_taken.rbegin()); ivan.erase(i1); not_taken.insert(i1); ivan.insert(i2); not_taken.erase(i2); t+=da[i2].first-da[i1].first; if(da[i2].first<da[i1].first) { return vector<int>(0); } } vector<int>ret; for(auto of:ivan) { if(of>=da.size())return vector<int>(0); ret.push_back(da[of].second); } sort(ret.begin(),ret.end()); return ret; }

Compilation message (stderr)

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:9:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    9 |     for(int i=0;i<w.size();i++)
      |                 ~^~~~~~~~~
molecules.cpp:15:17: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   15 |     for(ll i=0;i<da.size();i++)
      |                ~^~~~~~~~~~
molecules.cpp:23:23: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   23 |     for(ll i=0;i<=j&&i<da.size();i++)
      |                      ~^~~~~~~~~~
molecules.cpp:28:25: warning: comparison of integer expressions of different signedness: 'int' and 'long long unsigned int' [-Wsign-compare]
   28 |  for(int i=da.size()-1;i>=da.size()-j-1&&i>=0;i--)
      |                        ~^~~~~~~~~~~~~~~
molecules.cpp:38:20: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   38 |  for(ll i=0;i<=j&&i<da.size();i++)ivan.insert(i);
      |                   ~^~~~~~~~~~
molecules.cpp:39:16: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   39 |  for(ll i=j+1;i<da.size();i++)not_taken.insert(i);
      |               ~^~~~~~~~~~
molecules.cpp:61:8: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   61 |   if(of>=da.size())return vector<int>(0);
      |      ~~^~~~~~~~~~~
#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...