제출 #992668

#제출 시각아이디문제언어결과실행 시간메모리
992668amin_2008A Difficult(y) Choice (BOI21_books)C++17
0 / 100
1 ms344 KiB
#include <iostream> #include <fstream> #include <cstdio> #include <queue> #include <vector> #include <algorithm> #include <iomanip> #include <map> #include <cassert> #include <unordered_map> #include <set> #include <stack> #include <cstring> #include <cmath> #include <bitset> #include <random> #include <numeric> #include <cstdlib> #include <array> #include "books.h" using namespace std; // // --- Sample implementation for the task books --- // // To compile this program with the sample grader, place: // books.h books_sample.cpp sample_grader.cpp // in a single folder and run: // g++ books_sample.cpp sample_grader.cpp // in this folder. // void solve(int N, int K, long long A, int S) { int l = 1, r = N; while (l < r) { int mid = (l + r) >> 1; if (skim(mid) >= A) r = mid; else l = mid + 1; } if (r <= N and r >= K) { int sum = skim(r); vector < int > res; res.push_back(r); for(int i = 1; i < K; i++) res.push_back(i), sum += skim(i); if (sum >= A and sum <= A * 2) { answer(res); return; } } if (r < K) { impossible(); return; } vector < pair < int , int > > v; int sum = 0; for(int i = 1; i <= K; i++) v.push_back(make_pair(i, skim(i))), sum += v[i].second; for(int i = K - 1; i >= 0; i--) { if (sum >= A and sum <= A * 2) break; int lo = i + 1, hi = (i + 1 == v.size() ? r - 1 : v[i + 1].first - 1); while (lo < hi) { int mid = (lo + hi) >> 1; if (skim(mid) + sum - v[i].second >= A) hi = mid; else lo = mid + 1; } sum -= v[i].second; v[i] = make_pair(lo, skim(lo)); sum += v[i].second; } if (sum < A or sum > A * 2) { impossible(); return; } vector<int> res; for(pair < int , int > i : v) res.push_back(i.first); answer(res); } // 15 3 42 15 // 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 // x_i+1 - x_i <= A / K // 6 3 8 12 // 1 2 3 4 5 6

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

books.cpp: In function 'void solve(int, int, long long int, int)':
books.cpp:66:37: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   66 |         int lo = i + 1, hi = (i + 1 == v.size() ? r - 1 : v[i + 1].first - 1);
      |                               ~~~~~~^~~~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...