Submission #537183

#TimeUsernameProblemLanguageResultExecution timeMemory
537183andrei_boacaDetecting Molecules (IOI16_molecules)C++17
100 / 100
50 ms6784 KiB
#include <bits/stdc++.h> #include "molecules.h" //#include "grader.cpp" using namespace std; typedef long long ll; int n; struct date { ll val,poz; } v[200005]; ll s[200005]; bool comp(date a, date b) { return a.val<b.val; } vector<int> find_subset(int l,int u,vector<int> w) { n=w.size(); for(int i=0;i<w.size();i++) if(w[i]>=l&&w[i]<=u) return {i}; for(int i=0;i<w.size();i++) v[i+1]={w[i],i}; sort(v+1,v+n+1,comp); for(int i=1;i<=n;i++) s[i]=s[i-1]+v[i].val; for(int i=1;i<=n;i++) { ll pozmin=1e9; ll st=i; ll dr=n; while(st<=dr) { ll mij=(st+dr)/2; ll suma=s[mij]-s[i-1]; if(suma>=l) { pozmin=mij; dr=mij-1; } else st=mij+1; } if(pozmin>n) continue; ll suma=s[pozmin]-s[i-1]; if(suma<=u) { vector<int> vals; for(int j=i;j<=pozmin;j++) vals.push_back(v[j].poz); return vals; } } return {}; }

Compilation message (stderr)

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