답안 #424287

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
424287 2021-06-11T19:14:28 Z Antekb Shortcut (IOI16_shortcut) C++14
0 / 100
1 ms 332 KB
#include "shortcut.h"
#include<bits/stdc++.h>
#define st first
#define nd second
using namespace std;
const int N=3005;
typedef long long ll;
const ll INF=1e18;
struct kol{
	deque<pair<ll, int> > Q;
	int ile=0;
	void push(ll a){
		ile++;
		int sum=1;
		while(Q.size() && Q.back().st<=a){
			sum+=Q.back().nd;
			Q.pop_back();
		}
		Q.push_back({a, sum});
	}
	void pop(){
		ile--;
		if(!--Q.front().nd)Q.pop_front();
	}
	ll maks(){
		if(!Q.size())return -INF;
		return Q.front().st;
	}
};
ll lew[N], pra[N], tab[N], dist[N], dist2[N], lew2[N], pra2[N];
int C;
ll calc(int a, int b){
	dist[a]=lew[a];
	dist[b]=pra[b];
	ll ans=max(pra2[b], lew2[a]);
	int j=a+1;
	kol q, q2;
	q.push(tab[a]+dist[a]);
	for(int i=a+1; i<=b; i++)q2.push(dist[i]-tab[i]);
	//cout<<a<<"."<<b<<"\n\n";
	for(int i=a; i<=b; i++){
		while(j<=b && tab[j]-tab[i]<=tab[b]-tab[j]+C+tab[i]-tab[a]){
			//cout<<"+ "<<tab[j]+dist[j]<<"\n";
			q.push(tab[j]+dist[j]);
			q2.pop();
			j++;
		}
		q.pop();
		//cout<<i<<" "<<j<<"\n";
		//cout<<q.ile<<" "<<q.maks()<<" "<<q2.ile<<" "<<q2.maks()<<"\n";
		ans=max(ans, dist[i]+q.maks()-tab[i]);
		ans=max(ans, dist[i]+q2.maks()+C+tab[i]-tab[a]+tab[b]);
		//cout<<dist[i]+q.maks()-tab[i]<<" "<<dist[i]+q2.maks()+C+tab[i]-tab[a]+tab[b]<<"\n";
		/*for(int j=i+1; j<=b; j++){
			//cout<<i<<j<<" "<<dist[i]<<" "<<dist[j]<<" "<<tab[j]-tab[i]<<" "<<tab[b]-tab[j]+C+tab[i]-tab[a]<<"\n";
			ans=max(ans, dist[i]+dist[j]+min(tab[j]-tab[i], tab[b]-tab[j]+C+tab[i]-tab[a]));
		}*/
	}
	dist[a]=dist2[a];
	dist[b]=dist2[b];
	//cout<<a<<" "<<b<<" "<<ans<<"\n\n";
	return ans;
}
long long find_shortcut(int n, std::vector<int> l, std::vector<int> d, int c)
{
	C=c;
	for(int i=1; i<n; i++){
		tab[i]=tab[i-1]+l[i-1];
	}
	for(int i=0; i<n; i++){
		dist[i]=dist2[i]=d[i];
		lew[i]=d[i];
		if(i){
			lew[i]=max(lew[i], lew[i-1]+l[i-1]);
			lew2[i]=max(lew2[i-1], lew[i-1]+d[i]+l[i-1]);
		}
	}
	for(int i=n-1; i>=0; i--){
		pra[i]=d[i];
		if(i+1<n){
			pra[i]=max(pra[i], pra[i+1]+l[i]);
			pra2[i]=max(pra2[i+1], pra[i+1]+d[i]+l[i]);
		}
	}
	ll ans=INF;
	int lst=n-1;
	for(int i=0; i<lst; i++){
		/*for(int j=0; j<=i; j++)cout<<"000"<<" ";
		for(int j=i+1; j<n; ++j){
			cout<<calc(i, j)<<" ";
			ans=min(ans, calc(i, j));
		}
		cout<<"\n";*/
		/*int l=i+1, r=n-1;
		while(l<r){
			int t=(r-l)/3;
			int m1=l+t, m2=r-t;
			if(calc(i, m1)>)
		}*/
		ll k=calc(i, lst);
		ans=min(k, ans);
		while(i<lst-1){
			ll l=calc(i, lst-1);
			ans=min(ans, l);
			if(l<k){
				lst--;
			}
			else break;
		}
	}
	//ans=calc(1, 3);
    return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB n = 4, 80 is a correct answer
2 Correct 0 ms 332 KB n = 9, 110 is a correct answer
3 Correct 0 ms 204 KB n = 4, 21 is a correct answer
4 Correct 0 ms 204 KB n = 3, 4 is a correct answer
5 Correct 0 ms 204 KB n = 2, 62 is a correct answer
6 Correct 0 ms 204 KB n = 2, 3 is a correct answer
7 Correct 1 ms 204 KB n = 3, 29 is a correct answer
8 Correct 0 ms 204 KB n = 2, 3 is a correct answer
9 Correct 1 ms 204 KB n = 2, 3 is a correct answer
10 Correct 0 ms 204 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 204 KB n = 2, 3000000000 is a correct answer
12 Correct 0 ms 204 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 204 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 204 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 204 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 204 KB n = 5, 4000000000 is a correct answer
17 Correct 0 ms 204 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 332 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 204 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 204 KB n = 5, 12 is a correct answer
21 Correct 0 ms 204 KB n = 5, 25 is a correct answer
22 Correct 0 ms 204 KB n = 2, 122 is a correct answer
23 Correct 1 ms 332 KB n = 10, 117 is a correct answer
24 Correct 0 ms 204 KB n = 10, 336 is a correct answer
25 Correct 1 ms 204 KB n = 10, 438 is a correct answer
26 Correct 0 ms 204 KB n = 10, 206 is a correct answer
27 Correct 0 ms 204 KB n = 10, 636 is a correct answer
28 Correct 1 ms 204 KB n = 4, 2399 is a correct answer
29 Correct 0 ms 332 KB n = 10, 10992 is a correct answer
30 Correct 0 ms 204 KB n = 10, 3112 is a correct answer
31 Correct 1 ms 332 KB n = 100, 51000000001 is a correct answer
32 Incorrect 1 ms 204 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB n = 4, 80 is a correct answer
2 Correct 0 ms 332 KB n = 9, 110 is a correct answer
3 Correct 0 ms 204 KB n = 4, 21 is a correct answer
4 Correct 0 ms 204 KB n = 3, 4 is a correct answer
5 Correct 0 ms 204 KB n = 2, 62 is a correct answer
6 Correct 0 ms 204 KB n = 2, 3 is a correct answer
7 Correct 1 ms 204 KB n = 3, 29 is a correct answer
8 Correct 0 ms 204 KB n = 2, 3 is a correct answer
9 Correct 1 ms 204 KB n = 2, 3 is a correct answer
10 Correct 0 ms 204 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 204 KB n = 2, 3000000000 is a correct answer
12 Correct 0 ms 204 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 204 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 204 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 204 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 204 KB n = 5, 4000000000 is a correct answer
17 Correct 0 ms 204 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 332 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 204 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 204 KB n = 5, 12 is a correct answer
21 Correct 0 ms 204 KB n = 5, 25 is a correct answer
22 Correct 0 ms 204 KB n = 2, 122 is a correct answer
23 Correct 1 ms 332 KB n = 10, 117 is a correct answer
24 Correct 0 ms 204 KB n = 10, 336 is a correct answer
25 Correct 1 ms 204 KB n = 10, 438 is a correct answer
26 Correct 0 ms 204 KB n = 10, 206 is a correct answer
27 Correct 0 ms 204 KB n = 10, 636 is a correct answer
28 Correct 1 ms 204 KB n = 4, 2399 is a correct answer
29 Correct 0 ms 332 KB n = 10, 10992 is a correct answer
30 Correct 0 ms 204 KB n = 10, 3112 is a correct answer
31 Correct 1 ms 332 KB n = 100, 51000000001 is a correct answer
32 Incorrect 1 ms 204 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB n = 4, 80 is a correct answer
2 Correct 0 ms 332 KB n = 9, 110 is a correct answer
3 Correct 0 ms 204 KB n = 4, 21 is a correct answer
4 Correct 0 ms 204 KB n = 3, 4 is a correct answer
5 Correct 0 ms 204 KB n = 2, 62 is a correct answer
6 Correct 0 ms 204 KB n = 2, 3 is a correct answer
7 Correct 1 ms 204 KB n = 3, 29 is a correct answer
8 Correct 0 ms 204 KB n = 2, 3 is a correct answer
9 Correct 1 ms 204 KB n = 2, 3 is a correct answer
10 Correct 0 ms 204 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 204 KB n = 2, 3000000000 is a correct answer
12 Correct 0 ms 204 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 204 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 204 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 204 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 204 KB n = 5, 4000000000 is a correct answer
17 Correct 0 ms 204 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 332 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 204 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 204 KB n = 5, 12 is a correct answer
21 Correct 0 ms 204 KB n = 5, 25 is a correct answer
22 Correct 0 ms 204 KB n = 2, 122 is a correct answer
23 Correct 1 ms 332 KB n = 10, 117 is a correct answer
24 Correct 0 ms 204 KB n = 10, 336 is a correct answer
25 Correct 1 ms 204 KB n = 10, 438 is a correct answer
26 Correct 0 ms 204 KB n = 10, 206 is a correct answer
27 Correct 0 ms 204 KB n = 10, 636 is a correct answer
28 Correct 1 ms 204 KB n = 4, 2399 is a correct answer
29 Correct 0 ms 332 KB n = 10, 10992 is a correct answer
30 Correct 0 ms 204 KB n = 10, 3112 is a correct answer
31 Correct 1 ms 332 KB n = 100, 51000000001 is a correct answer
32 Incorrect 1 ms 204 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB n = 4, 80 is a correct answer
2 Correct 0 ms 332 KB n = 9, 110 is a correct answer
3 Correct 0 ms 204 KB n = 4, 21 is a correct answer
4 Correct 0 ms 204 KB n = 3, 4 is a correct answer
5 Correct 0 ms 204 KB n = 2, 62 is a correct answer
6 Correct 0 ms 204 KB n = 2, 3 is a correct answer
7 Correct 1 ms 204 KB n = 3, 29 is a correct answer
8 Correct 0 ms 204 KB n = 2, 3 is a correct answer
9 Correct 1 ms 204 KB n = 2, 3 is a correct answer
10 Correct 0 ms 204 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 204 KB n = 2, 3000000000 is a correct answer
12 Correct 0 ms 204 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 204 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 204 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 204 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 204 KB n = 5, 4000000000 is a correct answer
17 Correct 0 ms 204 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 332 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 204 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 204 KB n = 5, 12 is a correct answer
21 Correct 0 ms 204 KB n = 5, 25 is a correct answer
22 Correct 0 ms 204 KB n = 2, 122 is a correct answer
23 Correct 1 ms 332 KB n = 10, 117 is a correct answer
24 Correct 0 ms 204 KB n = 10, 336 is a correct answer
25 Correct 1 ms 204 KB n = 10, 438 is a correct answer
26 Correct 0 ms 204 KB n = 10, 206 is a correct answer
27 Correct 0 ms 204 KB n = 10, 636 is a correct answer
28 Correct 1 ms 204 KB n = 4, 2399 is a correct answer
29 Correct 0 ms 332 KB n = 10, 10992 is a correct answer
30 Correct 0 ms 204 KB n = 10, 3112 is a correct answer
31 Correct 1 ms 332 KB n = 100, 51000000001 is a correct answer
32 Incorrect 1 ms 204 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB n = 4, 80 is a correct answer
2 Correct 0 ms 332 KB n = 9, 110 is a correct answer
3 Correct 0 ms 204 KB n = 4, 21 is a correct answer
4 Correct 0 ms 204 KB n = 3, 4 is a correct answer
5 Correct 0 ms 204 KB n = 2, 62 is a correct answer
6 Correct 0 ms 204 KB n = 2, 3 is a correct answer
7 Correct 1 ms 204 KB n = 3, 29 is a correct answer
8 Correct 0 ms 204 KB n = 2, 3 is a correct answer
9 Correct 1 ms 204 KB n = 2, 3 is a correct answer
10 Correct 0 ms 204 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 204 KB n = 2, 3000000000 is a correct answer
12 Correct 0 ms 204 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 204 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 204 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 204 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 204 KB n = 5, 4000000000 is a correct answer
17 Correct 0 ms 204 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 332 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 204 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 204 KB n = 5, 12 is a correct answer
21 Correct 0 ms 204 KB n = 5, 25 is a correct answer
22 Correct 0 ms 204 KB n = 2, 122 is a correct answer
23 Correct 1 ms 332 KB n = 10, 117 is a correct answer
24 Correct 0 ms 204 KB n = 10, 336 is a correct answer
25 Correct 1 ms 204 KB n = 10, 438 is a correct answer
26 Correct 0 ms 204 KB n = 10, 206 is a correct answer
27 Correct 0 ms 204 KB n = 10, 636 is a correct answer
28 Correct 1 ms 204 KB n = 4, 2399 is a correct answer
29 Correct 0 ms 332 KB n = 10, 10992 is a correct answer
30 Correct 0 ms 204 KB n = 10, 3112 is a correct answer
31 Correct 1 ms 332 KB n = 100, 51000000001 is a correct answer
32 Incorrect 1 ms 204 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB n = 4, 80 is a correct answer
2 Correct 0 ms 332 KB n = 9, 110 is a correct answer
3 Correct 0 ms 204 KB n = 4, 21 is a correct answer
4 Correct 0 ms 204 KB n = 3, 4 is a correct answer
5 Correct 0 ms 204 KB n = 2, 62 is a correct answer
6 Correct 0 ms 204 KB n = 2, 3 is a correct answer
7 Correct 1 ms 204 KB n = 3, 29 is a correct answer
8 Correct 0 ms 204 KB n = 2, 3 is a correct answer
9 Correct 1 ms 204 KB n = 2, 3 is a correct answer
10 Correct 0 ms 204 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 204 KB n = 2, 3000000000 is a correct answer
12 Correct 0 ms 204 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 204 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 204 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 204 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 204 KB n = 5, 4000000000 is a correct answer
17 Correct 0 ms 204 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 332 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 204 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 204 KB n = 5, 12 is a correct answer
21 Correct 0 ms 204 KB n = 5, 25 is a correct answer
22 Correct 0 ms 204 KB n = 2, 122 is a correct answer
23 Correct 1 ms 332 KB n = 10, 117 is a correct answer
24 Correct 0 ms 204 KB n = 10, 336 is a correct answer
25 Correct 1 ms 204 KB n = 10, 438 is a correct answer
26 Correct 0 ms 204 KB n = 10, 206 is a correct answer
27 Correct 0 ms 204 KB n = 10, 636 is a correct answer
28 Correct 1 ms 204 KB n = 4, 2399 is a correct answer
29 Correct 0 ms 332 KB n = 10, 10992 is a correct answer
30 Correct 0 ms 204 KB n = 10, 3112 is a correct answer
31 Correct 1 ms 332 KB n = 100, 51000000001 is a correct answer
32 Incorrect 1 ms 204 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB n = 4, 80 is a correct answer
2 Correct 0 ms 332 KB n = 9, 110 is a correct answer
3 Correct 0 ms 204 KB n = 4, 21 is a correct answer
4 Correct 0 ms 204 KB n = 3, 4 is a correct answer
5 Correct 0 ms 204 KB n = 2, 62 is a correct answer
6 Correct 0 ms 204 KB n = 2, 3 is a correct answer
7 Correct 1 ms 204 KB n = 3, 29 is a correct answer
8 Correct 0 ms 204 KB n = 2, 3 is a correct answer
9 Correct 1 ms 204 KB n = 2, 3 is a correct answer
10 Correct 0 ms 204 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 204 KB n = 2, 3000000000 is a correct answer
12 Correct 0 ms 204 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 204 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 204 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 204 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 204 KB n = 5, 4000000000 is a correct answer
17 Correct 0 ms 204 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 332 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 204 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 204 KB n = 5, 12 is a correct answer
21 Correct 0 ms 204 KB n = 5, 25 is a correct answer
22 Correct 0 ms 204 KB n = 2, 122 is a correct answer
23 Correct 1 ms 332 KB n = 10, 117 is a correct answer
24 Correct 0 ms 204 KB n = 10, 336 is a correct answer
25 Correct 1 ms 204 KB n = 10, 438 is a correct answer
26 Correct 0 ms 204 KB n = 10, 206 is a correct answer
27 Correct 0 ms 204 KB n = 10, 636 is a correct answer
28 Correct 1 ms 204 KB n = 4, 2399 is a correct answer
29 Correct 0 ms 332 KB n = 10, 10992 is a correct answer
30 Correct 0 ms 204 KB n = 10, 3112 is a correct answer
31 Correct 1 ms 332 KB n = 100, 51000000001 is a correct answer
32 Incorrect 1 ms 204 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB n = 4, 80 is a correct answer
2 Correct 0 ms 332 KB n = 9, 110 is a correct answer
3 Correct 0 ms 204 KB n = 4, 21 is a correct answer
4 Correct 0 ms 204 KB n = 3, 4 is a correct answer
5 Correct 0 ms 204 KB n = 2, 62 is a correct answer
6 Correct 0 ms 204 KB n = 2, 3 is a correct answer
7 Correct 1 ms 204 KB n = 3, 29 is a correct answer
8 Correct 0 ms 204 KB n = 2, 3 is a correct answer
9 Correct 1 ms 204 KB n = 2, 3 is a correct answer
10 Correct 0 ms 204 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 204 KB n = 2, 3000000000 is a correct answer
12 Correct 0 ms 204 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 204 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 204 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 204 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 204 KB n = 5, 4000000000 is a correct answer
17 Correct 0 ms 204 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 332 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 204 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 204 KB n = 5, 12 is a correct answer
21 Correct 0 ms 204 KB n = 5, 25 is a correct answer
22 Correct 0 ms 204 KB n = 2, 122 is a correct answer
23 Correct 1 ms 332 KB n = 10, 117 is a correct answer
24 Correct 0 ms 204 KB n = 10, 336 is a correct answer
25 Correct 1 ms 204 KB n = 10, 438 is a correct answer
26 Correct 0 ms 204 KB n = 10, 206 is a correct answer
27 Correct 0 ms 204 KB n = 10, 636 is a correct answer
28 Correct 1 ms 204 KB n = 4, 2399 is a correct answer
29 Correct 0 ms 332 KB n = 10, 10992 is a correct answer
30 Correct 0 ms 204 KB n = 10, 3112 is a correct answer
31 Correct 1 ms 332 KB n = 100, 51000000001 is a correct answer
32 Incorrect 1 ms 204 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -