제출 #1141167

#제출 시각아이디문제언어결과실행 시간메모리
1141167hennesseyMarathon Race 2 (JOI24_ho_t3)C++20
7 / 100
14 ms31824 KiB
#include <bits/stdc++.h> using namespace std; #define int long long vector <int> arr = {}; vector <vector <int>> dp(2002, vector <int>(2002, -1)); int dps(int c1, int c2, int n, int end, int t) { if((c2-c1) < 0) { if(t == 0) { int v = arr[c1-1]; return abs(end-v)*(n+1); } else { int v = arr[c2+1]; return abs(end-v)*(n+1); } } if(dp[c1][c2] != -1) { return dp[c1][c2]; } int totalm = 1e18; int v1 = c1+(n-(c2+1)); if(t == 0) { int data = dps(c1+1, c2, n, end, 0)+((arr[c1]-arr[c1-1])*(v1+1)); int data2 = dps(c1, c2-1, n, end, 1)+((arr[c2]-arr[c1-1])*(v1+1)); totalm = min(data, data2); } else { int data = dps(c1+1, c2, n, end, 0)+((arr[c2+1]-arr[c1])*(v1+1)); int data2 = dps(c1, c2-1, n, end, 1)+((arr[c2+1]-arr[c2])*(v1+1)); totalm = min(data, data2); } return dp[c1][c2] = totalm; } signed main() { //your code goes here int n, l; cin >> n >> l; for(int i = 0; i < n; i++) { int num; cin >> num; arr.push_back(num); } sort(arr.begin(), arr.end()); int q; cin >> q; for(int i = 0; i < q; i++) { for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { dp[i][j] = -1; } } int s, g, t; cin >> s >> g >> t; int data = dps(1, n-1, n, g, 0)+abs(s-arr[0]); int data2 = dps(0, n-2, n, g, 1)+abs(s-arr[n-1]); // cout << data << " " << data2 << " " << abs(arr[0]) << endl; if((min(data, data2)+n) <= t) { cout << "Yes" << endl; } else { cout << "No" << endl; } } return 0; }
#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...