Submission #261228

#TimeUsernameProblemLanguageResultExecution timeMemory
261228SaboonTreatment Project (JOI20_treatment)C++14
0 / 100
3079 ms2680 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 2e5 + 10;

int T[maxn], L[maxn], R[maxn], C[maxn], p[maxn], dp[maxn];

int main(){
	ios_base::sync_with_stdio(false);
	int n, m;
	cin >> n >> m;
	for (int i = 1; i <= m; i++)
		cin >> T[i] >> L[i] >> R[i] >> C[i];
	for (int i = 1; i <= m; i++)
		p[i] = i;
	sort(p+1, p+m+1, [](int a, int b){ 
		if (L[a] != L[b])
			return L[a] < L[b];
		return R[a] < R[b];
	});
	for (int iit = 1; iit <= m; iit++){
		int i = p[iit];
		if (L[i] == 1)
			dp[i] = C[i];
		else
			dp[i] = -1;
		for (int jit = 1; jit < iit; jit++){
			int j = p[jit];
			if (abs(T[i]-T[j]) <= R[j]-L[i]+1 and dp[j] != -1)
				if (dp[i] == -1 or dp[i] > dp[j] + C[i])
					dp[i] = dp[j] + C[i];
		}
	}
	int answer = -1;
	for (int i = 1; i <= m; i++)
		if (R[i] == n and dp[i] != -1 and (answer == -1 or answer > dp[i]))
			answer = dp[i];
	cout << answer << endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...