Submission #302330

#TimeUsernameProblemLanguageResultExecution timeMemory
302330MasterTasterDetecting Molecules (IOI16_molecules)C++14
100 / 100
75 ms6880 KiB
#include "molecules.h" #include <bits/stdc++.h> #define ll long long #define xx first #define yy second using namespace std; ll pref[200010]; std::vector<int> find_subset(int l, int u, std::vector<int> w) { vector< pair<ll, int> > ww; for (int i=0; i<w.size(); i++) ww.push_back({(ll)w[i], i}); int n=w.size(); sort(ww.begin(), ww.end()); pref[0]=ww[0].xx; for (int i=1; i<n; i++) pref[i]=pref[i-1]+ww[i].xx; //cout<<"ee"; int levo=-1, desno=-1; for (int i=0; i<n; i++) { ll koliko=(ll)l; if (i) koliko+=pref[i-1]; auto it=lower_bound(pref, pref+n, koliko); if (it==pref+n) continue; int gde=distance(pref, it); //cout<<gde<<" "<<pref[gde]<<" "<<koliko-l<<endl; if (pref[gde]-(koliko-l)>(ll)u) continue; //cout<<i<<endl; levo=i; desno=distance(pref, it); break; } vector<int> ret(0); if (levo==-1 && desno==-1) return ret; for (int i=levo; i<=desno; i++) ret.push_back(ww[i].yy); return ret; }

Compilation message (stderr)

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:13:48: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   13 |     vector< pair<ll, int> > ww; for (int i=0; i<w.size(); i++) ww.push_back({(ll)w[i], 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...