제출 #1288916

#제출 시각아이디문제언어결과실행 시간메모리
1288916BigBadBullyA Difficult(y) Choice (BOI21_books)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> #include "books.h" #define int long long #define pii pair<int,int> using namespace std; void solve(signed n,signed k,int a,signed s) { vector<int> v(n,-1); auto f = [&](int idx) { if(v[idx] < 0) v[idx] = skim(idx+1); return v[idx]; }; auto check = [&](int i) { int prev = f(i); int sum = prev; for (int j = i+1;j-i < k; j++) { prev = max(prev+1,v[j]); sum+=prev; } return sum < a; }; int l = 0,r = n-k; while(r-l) { int mid = l+r>>1; if(check(mid)) l = mid+1; else r = mid; } auto gt = [&](int i) { int sum = 0; for (int j = i; j < i+k; j++){ if(v[j]<0)return 4*a; sum+=v[j]; } return sum; }; auto ende = [&](int idx) { if(gt(idx) >= a && gt(idx) <= 2*a) { vector<int> ans; for (int h = idx;h < idx+k;h++)ans.push_back(h+1); answer(ans); return true; } return false; }; { int sum = f(l); int i = l+1; for (;i-l < k && f(i) < a; sum+=f(i),i++); r = i; if(i < k-1) { impossible(); return; } } if (ende(l))return; int i = l-1; for (; i >= 0 && f(i) && gt(i) >= a; i--); for (int j = i; gt(j) <= 2*a;j++) if(ende(j))return; int sm = 0; for (int i = 0 ; i < k-1; i++) sm+=f(i); if(a <= sm+f(r) && sm+f(r) <= 2*a) { vector<int> ans; for (int i = 0; i < k-1; i++)ans.push_back(i+1); ans.push_back(r+1); answer(ans); } else impossible(); }

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

books.cpp: In lambda function:
books.cpp:51:20: error: could not convert 'ans' from 'vector<long long int>' to 'vector<int>'
   51 |             answer(ans);
      |                    ^~~
      |                    |
      |                    vector<long long int>
books.cpp: In function 'void solve(int, int, long long int, int)':
books.cpp:82:16: error: could not convert 'ans' from 'vector<long long int>' to 'vector<int>'
   82 |         answer(ans);
      |                ^~~
      |                |
      |                vector<long long int>