이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
#include"books.h"
#define ll long long
#define fi first
#define se second
using namespace std ;
//void impossible()
//{
// cout << "-1\n" ;
// exit(0) ;
//}
//void answer(vector<int> ans)
//{
// for(int i : ans)
// cout << i << ' ' ;
// exit(0) ;
//}
//ll skim(int ind)
//{
// cout << "? " << ind << '\n' ;
// return ind ;
//}
void solve(int n, int k, ll a, int s)
{
vector<int> ans ;
ll x[n + 1] = {} ;
if(s >= n)
{
set<pair<ll, int>> s ;
ll pref[n + 1] = {} ;
for(int i = 1 ; i <= n ; i++)
{
x[i] = skim(i) ;
s.insert({x[i], i}) ;
pref[i] = pref[i - 1] + x[i] ;
}
if(k == 3 && n <= 1000)
{
for(int i = 1 ; i <= n ; i++)
for(int j = i + 1 ; j <= n ; j++)
{
ll sum = a - x[i] - x[j], sum1 = x[i] + x[j] ;
if(a <= (*s.upper_bound({sum - 1, 0})).fi + sum1 && (*s.upper_bound({sum - 1, 0})).fi + sum1 <= 2 * a)
{
ans.push_back(i) ;
ans.push_back(j) ;
ans.push_back((*s.upper_bound({sum - 1, 0})).se) ;
answer(ans) ;
}
}
impossible() ;
}
for(int i = k ; i <= n ; i++)
if(a <= pref[i] - pref[i - k] && pref[i] - pref[i - k] <= 2ll * a)
{
for(int j = i - k + 1 ; j <= i ; j++)
ans.push_back(j) ;
answer(ans) ;
}
impossible() ;
}
ll l = 0, r = n - k + 1 ;
vector<pair<ll, int>> w, ls ;
while(l + 1 < r)
{
w.clear() ;
ll mid = (l + r) >> 1, sum = 0 ;
for(int i = mid ; i < mid + k ; i++)
{
ll num = skim(i) ;
sum += num ;
w.push_back({num, i}) ;
}
if(sum > 2 * a)r = mid ;
else
{
ls = w ;
ans.clear() ;
for(auto i : w)
ans.push_back(i.se) ;
l = mid ;
}
}
ll sum = 0 ;
for(auto i : ls)
sum += i.fi ;
if(a <= sum && sum <= 2 * a)
answer(ans) ;
else
impossible() ;
}
//signed main()
//{
// int n, k, a, s ;
// cin >> n >> k >> a >> s ;
// solve(n, k, a, s) ;
// return 0 ;
//}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |