Submission #1057360

#TimeUsernameProblemLanguageResultExecution timeMemory
1057360beaconmcMarathon Race 2 (JOI24_ho_t3)C++14
7 / 100
0 ms348 KiB
#include <bits/stdc++.h>
 
typedef long long ll;
#define FOR(i,x,y) for(ll i=x; i<y; i++)
#define FORNEG(i,x,y) for(ll i=x; i>y; i--)
 
using namespace std;


int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	ll n,l;
	cin >> n >> l;
	vector<ll> arr(n);
	FOR(i,0,n) cin >> arr[i];
	sort(arr.begin(), arr.end());


	ll q;
	cin >> q;


	FOR(i,0,q){
		ll a,b,t;
		cin >> a >> b >> t;
		ll ans = 100000000000000000;
		ll temp = 0;
		ll cur = 1;
		ll pos = a;

		temp += abs(pos-arr[0]) * cur;
		pos = arr[0];
		FOR(j,0,n){
			if (arr[j] < b){
				temp += abs(pos-arr[j]) * cur;
				pos = arr[j];
				cur += 1;
			}else break;
		}
		temp += abs(pos - arr[n-1]) * cur;
		pos = arr[n-1];
		FORNEG(j, n-1, -1){
			if (arr[j] > b){
				temp += abs(pos-arr[j]) * cur;
				pos = arr[j];
				cur += 1;
			}else break;
		}
		temp += abs(pos - b) * cur;
		ans = min(ans, temp);
		temp = 0;
		cur = 1;
		pos = a;

		temp += abs(pos - arr[n-1]) * cur;
		pos = arr[n-1];
		FORNEG(j, n-1, -1){
			if (arr[j] > b){
				temp += abs(pos-arr[j]) * cur;
				pos = arr[j];
				cur += 1;
			}else break;
		}

		temp += abs(pos-arr[0]) * cur;
		pos = arr[0];
		FOR(j,0,n){
			if (arr[j] < b){
				temp += abs(pos-arr[j]) * cur;
				pos = arr[j];
				cur += 1;
			}else break;
		}
		temp += abs(pos - b) * cur;
		ans = min(ans, temp);
		ans += n;

		if (ans <= t) cout << "Yes\n";
		else cout << "No\n";


	}





}
#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...