제출 #1313943

#제출 시각아이디문제언어결과실행 시간메모리
1313943voldi9Detecting Molecules (IOI16_molecules)C++20
100 / 100
34 ms3740 KiB
#include "molecules.h"
#include <iostream>
#include <vector>
#include <span>
#include <algorithm>

using namespace std;

vector<int> map_to_second(span<pair<int,int>> s) {
  vector<int> res{};
  for (auto &el : s)
    res.push_back(el.second);
  return res;
}

vector<int> find_subset(int l, int u, vector<int> w) {
  vector<pair<int, int>> items(w.size());
  for (int i = 0; i < w.size(); i++) {
      items[i] = {w[i], i};
  }
  sort(items.begin(), items.end());
  int p1=0, p2=0;
  long long sum = 0;
  while (p1 < w.size()) {
    while (sum < l && p2 < w.size())
      sum += items[p2++].first;
    while (sum > u && p1 < w.size())
      sum -= items[p1++].first;
    if (sum >= l)
      return map_to_second(span<pair<int,int>>(items.begin() + p1, items.begin() + p2));
    else if (p2 >= w.size()) return {};
  }
}

컴파일 시 표준 에러 (stderr) 메시지

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:33:1: warning: control reaches end of non-void function [-Wreturn-type]
   33 | }
      | ^
molecules.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
molecules_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...