Submission #87695

#TimeUsernameProblemLanguageResultExecution timeMemory
87695Retro3014Detecting Molecules (IOI16_molecules)C++17
100 / 100
67 ms34644 KiB
#include "molecules.h" #include <vector> #include <algorithm> typedef long long ll; struct S{ int x, y; bool operator <(const S &a)const{ return y<a.y; } }; using namespace std; #define MAX_N 200000 vector<int> ans; vector<S> v; ll sum1[MAX_N+10], sum2[MAX_N+10]; vector<int> find_subset(int l, int u, vector<int> w){ for(int i=0; i<w.size(); i++){ v.push_back({i, w[i]}); } sort(v.begin(), v.end()); for(int i=0; i<v.size(); i++){ if(i==0){ sum1[i]=(ll)v[i].y; }else{ sum1[i]=sum1[i-1]+(ll)v[i].y; } } for(int i=(int)v.size()-1; i>=0; i--){ if(i==v.size()-1){ sum2[i]=(ll)v[i].y; }else{ sum2[i]=sum2[i+1]+(ll)v[i].y; } } int s=-1, e=0; while(e<=v.size()){ if((s==-1?0:sum1[s])+sum2[e]>=(ll)l && (s==-1?0:sum1[s])+sum2[e]<=u){ break; } else if((s==-1?0:sum1[s])+sum2[e]<(ll)l){ if(s==e-1){ break; } s++; }else{ e++; } } if((s==-1?0:sum1[s])+sum2[e]>=(ll)l && (s==-1?0:sum1[s])+sum2[e]<=u){ for(int i=0; i<=s; i++){ ans.push_back(v[i].x); } for(int i=e; i<v.size(); i++){ ans.push_back(v[i].x); } } return ans; }

Compilation message (stderr)

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:24:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0; i<w.size(); i++){
                  ~^~~~~~~~~
molecules.cpp:28:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0; i<v.size(); i++){
                  ~^~~~~~~~~
molecules.cpp:36:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if(i==v.size()-1){
            ~^~~~~~~~~~~~
molecules.cpp:43:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(e<=v.size()){
           ~^~~~~~~~~~
molecules.cpp:60:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i=e; i<v.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...