Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma GCC optimize ("Ofast,unroll-loops")
- #pragma GCC target ("avx2,fma")
- #include<bits/stdc++.h>
- //#include <ext/pb_ds/assoc_container.hpp>
- using namespace std;
- //typedef tree<ште,null_type,less<>, rb_tree_tag,
- //tree_order_statistics_node_update> indexed_set;
- //rope
- #define forx(i,a,b) for (long long i = a; i < b; i++)
- #define INF 1e9
- #define all(x2) begin(x2),end(x2)
- #define size(t3) ((ll)(t3.size()))
- #define last(x) (*(x.end()-1))
- #define mod ll(1e9+7)
- using ll= long long;
- using ld= long double;
- using ull=unsigned long long;
- bool f(vector<ll>&tm,ll r,ll t){
- vector<ll>dp(size(tm),0);
- multiset<ll>s{0};
- forx(i,1,size(dp)){
- dp[i]=*s.begin()+tm[i];
- s.insert(dp[i]);
- if(size(s)>r)
- s.erase(s.find(dp[i-r]));
- }
- if(last(dp)+size(tm)-1<=t)
- return true;
- else
- return false;
- }
- int main() {
- ios::sync_with_stdio(false);
- cin.tie(nullptr);
- cout.tie(nullptr);
- /*cout.setf(ios::fixed);
- cout.precision(15);*/
- /*freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);*/
- ll n, t, x;
- cin>>n>>t;
- vector<ll> v;
- forx(i, 0, n - 1) {
- cin >> x;
- v.push_back(x);
- }
- vector<ll> tm(n);
- tm[0]=0;
- tm[n-1]=0;
- forx(i, 1, n-1 )cin >> tm[i];
- ll left = 1;
- ll right = n - 1;
- while (left < right) {
- ll mid = (left + right) / 2;
- if (f(tm, mid, t))
- right = mid;
- else
- left = mid + 1;
- }
- ll res=200000;
- forx( i,0,size(v)){
- if(i+1>=left && v[i]<res)
- res=v[i];
- }
- cout << res;
- }
Add Comment
Please, Sign In to add comment