Submission #784742

# Submission time Handle Problem Language Result Execution time Memory
784742 2023-07-16T13:14:48 Z aymanrs Shortcut (IOI16_shortcut) C++14
0 / 100
1 ms 212 KB
#include<bits/stdc++.h>
using namespace std;
long long find_shortcut(int n, vector<int> l, vector<int> d, int c){
	long long L = 1, R = (long long)1e9 * n, M, B = R;
	long long t[n];
	vector<pair<long long, long long>> mtd[n];
	vector<long long> smin[n];
	t[0] = 0;
	for(int i = 1;i < n;i++) t[i] = l[i-1]+t[i-1];
	for(int i = 0;i < n;i++){
		for(int j = i+1;j < n;j++){
			mtd[i].emplace_back(t[j]+d[j], t[j]-d[j]);
		}
		sort(mtd[i].begin(), mtd[i].end());
		smin[i].resize(mtd[i].size());
		long long nex = LONG_LONG_MAX;
		for(int j = n-1;j > i;j--){
			nex = smin[i][j-i-1] = min(t[j]-mtd[i][j-i-1].second, nex);
		}
	}
	while(L <= R){
		M = L+(R-L)/2;
		bool ok = false;
		for(int i = 0;i < n;i++){
			long long le = 0, re = LONG_LONG_MAX;
			for(int j = 0;j < n;j++){
				if(mtd[j].empty() || mtd[j].back().first-t[j]+d[j] <= M) continue;
				le = max(le, abs(t[j]-t[i])+mtd[j].back().first+d[j]+c-M);
				int p = lower_bound(mtd[j].begin(), mtd[j].end(), make_pair(M+t[j]-d[j]+1, LONG_LONG_MIN))-mtd[j].begin();
				re = min(re, smin[j][p]-abs(t[j]-t[i])-d[j]+M-c);
			}
			for(int j=0;j < n;j++) ok |= le <= t[j] && t[j] <= re;
		}
		if(ok) {
			R = M-1;
			B = M;
		} else L = M+1;
	}
	return B;
}
// int main(){
// 	cout << find_shortcut(4, {10, 20, 20}, {0, 40, 0, 30}, 10) << '\n';
// }
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB n = 4, 80 is a correct answer
2 Incorrect 1 ms 212 KB n = 9, incorrect answer: jury 110 vs contestant 100
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB n = 4, 80 is a correct answer
2 Incorrect 1 ms 212 KB n = 9, incorrect answer: jury 110 vs contestant 100
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB n = 4, 80 is a correct answer
2 Incorrect 1 ms 212 KB n = 9, incorrect answer: jury 110 vs contestant 100
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB n = 4, 80 is a correct answer
2 Incorrect 1 ms 212 KB n = 9, incorrect answer: jury 110 vs contestant 100
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB n = 4, 80 is a correct answer
2 Incorrect 1 ms 212 KB n = 9, incorrect answer: jury 110 vs contestant 100
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB n = 4, 80 is a correct answer
2 Incorrect 1 ms 212 KB n = 9, incorrect answer: jury 110 vs contestant 100
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB n = 4, 80 is a correct answer
2 Incorrect 1 ms 212 KB n = 9, incorrect answer: jury 110 vs contestant 100
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB n = 4, 80 is a correct answer
2 Incorrect 1 ms 212 KB n = 9, incorrect answer: jury 110 vs contestant 100
3 Halted 0 ms 0 KB -