Submission #1193609

#TimeUsernameProblemLanguageResultExecution timeMemory
1193609NAMINCollecting Stamps 3 (JOI20_ho_t3)C++20
0 / 100
0 ms320 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define endl "\n"


int N,L;

ll calc(vector<ll> X,vector<ll> revX,vector<ll> T,int l,int r){
	ll trav = 0;
	ll pos = 0;
	ll take = 0;
	for(int i=0;i<=l;i++){
		if(trav+(X[i]-pos) <= T[i]){
			trav += X[i]-pos;
			pos = X[i];
			take++;
		}
	}
	trav += pos;
	pos = 0;
	for(int i=0;i<=N-r-1;i++){
		if(trav+(revX[i]-pos) <= T[N-i-1]){
			trav += X[i]-pos;
			pos = X[i];
			take++;
		}
	}
	return take;
}

void solve(){
	//ifstream cin("pairup.in");
	//ofstream cout("pairup.out");
	
	cin >> N >> L;
	vector<ll> X(N),T(N);
	for(int i=0;i<N;i++)
		cin >> X[i];
	for(int i=0;i<N;i++)
		cin >> T[i];

	vector<ll> revX = X;
	reverse(revX.begin(),revX.end());
	for(int i=0;i<N;i++){
		//cout << revX[i] << ' ';
		revX[i] = L-revX[i];
	}
	//cout << endl;
	
	ll ans = 0;
	for(int l=-1;l<N;l++){
		for(int r=N;r>l;r--){
			ans = max(ans,max(calc(X,revX,T,l,r),calc(revX,X,T,l,r)));
		}
	}
	cout << ans << endl;
}		

int main(){
	int t=1;
	//cin >> t;
	while(t--){
		solve();
	}
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...