Submission #196942

#TimeUsernameProblemLanguageResultExecution timeMemory
196942SwanDetecting Molecules (IOI16_molecules)C++14
100 / 100
88 ms6376 KiB
#include <bits/stdc++.h> //#include "molecules.h" #define stop system("pause") #define stop2 char o; cin >> o #define INP freopen("cowrect.in","r",stdin) #define OUTP freopen ("cowrect.out","w",stdout) using namespace std; vector<int> find_subset(int l, int u, vector<int> w) { vector<pair<int,int> > start; for(int i(0); i < w.size();i++){ start.push_back({w[i],i}); } sort(start.begin(),start.end()); sort(w.begin(),w.end()); if(w[0] > u)return {}; long long res = 0; for(int i(0); i < w.size();i++){ res+=w[i]; } if(res < l)return {}; if(res>=l && res<=u){ vector<int> ans; for(int i(0); i < start.size();i++)ans.push_back(start[i].second); return ans; } res = 0; set<pair<int,int> > s; int cnt = 0; int pnt = 0; int kek = -1; for(int i(0); i < w.size();i++){ if(res + w[i] > u)break; res+=w[i]; cnt++; s.insert({w[i],i}); kek++; } //cout << res << ' ' << cnt << endl; vector<int> v; if(res>=l && res <=u){ int pnt = 0; for(auto& a: s)v.push_back(start[a.second].second); return v; } //return {w.size()}; pnt = w.size()-1; while(cnt){ int now = s.begin()->first; res-=now; res+=w[pnt]; s.erase(s.begin()); s.insert({w[pnt],pnt}); pnt--; cnt--; //cout << res << ' ' << l << ' ' << u << endl; if(res>=l && res <=u){ int pnt = 0; for(auto& a: s)v.push_back(start[a.second].second); return v; } if(pnt == kek)break; } //cout << res << endl; return {}; } /* main(){ ios_base::sync_with_stdio(0); int l,u,n; cin >> l >> u >> n; vector<int> v; for(int i(0); i < n;i++){ int x; cin >> x; v.push_back(x); } vector<int> ans = find_subset(l,u,v); for(int i(0); i < ans.size();i++)cout << ans[i] << ' '; return 0; } */ /* 15 17 4 6 8 8 7 14 15 4 5 5 6 6 10 20 4 15 17 16 18 0 0 5 10 10 10 10 10 9 10 6 5 5 5 6 6 6 */

Compilation message (stderr)

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:13:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i(0); i < w.size();i++){
                   ~~^~~~~~~~~~
molecules.cpp:20:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i(0); i < w.size();i++){
                   ~~^~~~~~~~~~
molecules.cpp:26:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i(0); i < start.size();i++)ans.push_back(start[i].second);
                       ~~^~~~~~~~~~~~~~
molecules.cpp:34:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i(0); i < w.size();i++){
                   ~~^~~~~~~~~~
molecules.cpp:44:13: warning: unused variable 'pnt' [-Wunused-variable]
         int pnt = 0;
             ^~~
molecules.cpp:60:17: warning: unused variable 'pnt' [-Wunused-variable]
             int pnt = 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...