답안 #1031592

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1031592 2024-07-23T02:21:04 Z pcc Shortcut (IOI16_shortcut) C++17
0 / 100
2000 ms 3236 KB
#include "shortcut.h"
#include <bits/stdc++.h>
using namespace std;

#pragma GCC optimize("O3,unroll-loops")
#pragma GCC taget("avx2,popcnt,sse4")

#define pll pair<ll,ll>
#define fs first
#define sc second
#define pii pair<int,int>
#define ll long long

#define DEBUG(T) cerr<<#T<<":"<<T<<endl;

const ll inf = 1e18;
const int mxn = 255;
ll pref[mxn];
ll arr[mxn];
int C,N;
int trans[mxn];
vector<pll> paths[mxn];
ll dp[mxn][mxn];

ll dist[mxn];
namespace DIJKSTRA{
	priority_queue<pll,vector<pll>,greater<pll>> pq;
	void GO(int s){
		fill(dist,dist+mxn,inf);
		dist[s] = arr[s];
		pq.push(pll(arr[s],s));
		while(!pq.empty()){
			auto [d,now] = pq.top();
			pq.pop();
			if(dist[now] != d)continue;
			for(auto [nxt,w]:paths[now]){
				if(dist[nxt]>d+w){
					dist[nxt] = d+w;
					pq.push(pll(dist[nxt],nxt));
				}
			}
		}
		return;
	}
}

ll calc(int a,int b){
	for(int i = 1;i<N;i++){
		paths[i].push_back(pll(i-1,pref[i]-pref[i-1]));
		paths[i-1].push_back(pll(i,pref[i]-pref[i-1]));
	}
	paths[b].push_back(pll(a,C));
	paths[a].push_back(pll(b,C));
	ll ans = 0;
	for(int i = 0;i<N;i++){
		DIJKSTRA::GO(i);
		for(int j = 0;j<N;j++)if(j != i)dist[j] += arr[j];
		ans = max(ans,*max_element(dist,dist+N));
	}
	paths[a].pop_back();
	paths[b].pop_back();
	return ans;
}

long long find_shortcut(int n, std::vector<int> l, std::vector<int> d, int c){
	N = n,C = c;
	for(int i = 0;i+1<N;i++){
		pref[i+1] = pref[i]+l[i];
	}
	for(int i = 0;i<N;i++)arr[i] = d[i];
	ll ans = inf;
	for(int i = 0;i<N;i++){
		for(int j = 0;j<=i;j++){
			dp[j][i] = calc(j,i);
			ans = min(ans,dp[j][i]);
		}
	}
	for(int i = 1;i<N;i++){
		for(int j = 0;j<i;j++){
			if(dp[trans[i]][i]<dp[j][i])trans[i] = j;
		}
	}
	return ans;
}

Compilation message

shortcut.cpp:6: warning: ignoring '#pragma GCC taget' [-Wunknown-pragmas]
    6 | #pragma GCC taget("avx2,popcnt,sse4")
      |
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB n = 4, 80 is a correct answer
2 Correct 1 ms 348 KB n = 9, 110 is a correct answer
3 Correct 0 ms 348 KB n = 4, 21 is a correct answer
4 Correct 0 ms 604 KB n = 3, 4 is a correct answer
5 Correct 0 ms 348 KB n = 2, 62 is a correct answer
6 Correct 1 ms 348 KB n = 2, 3 is a correct answer
7 Correct 1 ms 348 KB n = 3, 29 is a correct answer
8 Correct 0 ms 348 KB n = 2, 3 is a correct answer
9 Correct 0 ms 460 KB n = 2, 3 is a correct answer
10 Correct 0 ms 348 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 348 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 348 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 348 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 348 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 452 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 348 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 348 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 348 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 348 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 348 KB n = 5, 12 is a correct answer
21 Correct 0 ms 348 KB n = 5, 25 is a correct answer
22 Correct 0 ms 348 KB n = 2, 122 is a correct answer
23 Correct 1 ms 348 KB n = 10, 117 is a correct answer
24 Correct 1 ms 348 KB n = 10, 336 is a correct answer
25 Correct 1 ms 348 KB n = 10, 438 is a correct answer
26 Correct 1 ms 348 KB n = 10, 206 is a correct answer
27 Correct 1 ms 348 KB n = 10, 636 is a correct answer
28 Correct 1 ms 348 KB n = 4, 2399 is a correct answer
29 Correct 1 ms 348 KB n = 10, 10992 is a correct answer
30 Correct 1 ms 348 KB n = 10, 3112 is a correct answer
31 Execution timed out 2099 ms 3236 KB Time limit exceeded
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB n = 4, 80 is a correct answer
2 Correct 1 ms 348 KB n = 9, 110 is a correct answer
3 Correct 0 ms 348 KB n = 4, 21 is a correct answer
4 Correct 0 ms 604 KB n = 3, 4 is a correct answer
5 Correct 0 ms 348 KB n = 2, 62 is a correct answer
6 Correct 1 ms 348 KB n = 2, 3 is a correct answer
7 Correct 1 ms 348 KB n = 3, 29 is a correct answer
8 Correct 0 ms 348 KB n = 2, 3 is a correct answer
9 Correct 0 ms 460 KB n = 2, 3 is a correct answer
10 Correct 0 ms 348 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 348 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 348 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 348 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 348 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 452 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 348 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 348 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 348 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 348 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 348 KB n = 5, 12 is a correct answer
21 Correct 0 ms 348 KB n = 5, 25 is a correct answer
22 Correct 0 ms 348 KB n = 2, 122 is a correct answer
23 Correct 1 ms 348 KB n = 10, 117 is a correct answer
24 Correct 1 ms 348 KB n = 10, 336 is a correct answer
25 Correct 1 ms 348 KB n = 10, 438 is a correct answer
26 Correct 1 ms 348 KB n = 10, 206 is a correct answer
27 Correct 1 ms 348 KB n = 10, 636 is a correct answer
28 Correct 1 ms 348 KB n = 4, 2399 is a correct answer
29 Correct 1 ms 348 KB n = 10, 10992 is a correct answer
30 Correct 1 ms 348 KB n = 10, 3112 is a correct answer
31 Execution timed out 2099 ms 3236 KB Time limit exceeded
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB n = 4, 80 is a correct answer
2 Correct 1 ms 348 KB n = 9, 110 is a correct answer
3 Correct 0 ms 348 KB n = 4, 21 is a correct answer
4 Correct 0 ms 604 KB n = 3, 4 is a correct answer
5 Correct 0 ms 348 KB n = 2, 62 is a correct answer
6 Correct 1 ms 348 KB n = 2, 3 is a correct answer
7 Correct 1 ms 348 KB n = 3, 29 is a correct answer
8 Correct 0 ms 348 KB n = 2, 3 is a correct answer
9 Correct 0 ms 460 KB n = 2, 3 is a correct answer
10 Correct 0 ms 348 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 348 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 348 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 348 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 348 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 452 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 348 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 348 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 348 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 348 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 348 KB n = 5, 12 is a correct answer
21 Correct 0 ms 348 KB n = 5, 25 is a correct answer
22 Correct 0 ms 348 KB n = 2, 122 is a correct answer
23 Correct 1 ms 348 KB n = 10, 117 is a correct answer
24 Correct 1 ms 348 KB n = 10, 336 is a correct answer
25 Correct 1 ms 348 KB n = 10, 438 is a correct answer
26 Correct 1 ms 348 KB n = 10, 206 is a correct answer
27 Correct 1 ms 348 KB n = 10, 636 is a correct answer
28 Correct 1 ms 348 KB n = 4, 2399 is a correct answer
29 Correct 1 ms 348 KB n = 10, 10992 is a correct answer
30 Correct 1 ms 348 KB n = 10, 3112 is a correct answer
31 Execution timed out 2099 ms 3236 KB Time limit exceeded
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB n = 4, 80 is a correct answer
2 Correct 1 ms 348 KB n = 9, 110 is a correct answer
3 Correct 0 ms 348 KB n = 4, 21 is a correct answer
4 Correct 0 ms 604 KB n = 3, 4 is a correct answer
5 Correct 0 ms 348 KB n = 2, 62 is a correct answer
6 Correct 1 ms 348 KB n = 2, 3 is a correct answer
7 Correct 1 ms 348 KB n = 3, 29 is a correct answer
8 Correct 0 ms 348 KB n = 2, 3 is a correct answer
9 Correct 0 ms 460 KB n = 2, 3 is a correct answer
10 Correct 0 ms 348 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 348 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 348 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 348 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 348 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 452 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 348 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 348 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 348 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 348 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 348 KB n = 5, 12 is a correct answer
21 Correct 0 ms 348 KB n = 5, 25 is a correct answer
22 Correct 0 ms 348 KB n = 2, 122 is a correct answer
23 Correct 1 ms 348 KB n = 10, 117 is a correct answer
24 Correct 1 ms 348 KB n = 10, 336 is a correct answer
25 Correct 1 ms 348 KB n = 10, 438 is a correct answer
26 Correct 1 ms 348 KB n = 10, 206 is a correct answer
27 Correct 1 ms 348 KB n = 10, 636 is a correct answer
28 Correct 1 ms 348 KB n = 4, 2399 is a correct answer
29 Correct 1 ms 348 KB n = 10, 10992 is a correct answer
30 Correct 1 ms 348 KB n = 10, 3112 is a correct answer
31 Execution timed out 2099 ms 3236 KB Time limit exceeded
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB n = 4, 80 is a correct answer
2 Correct 1 ms 348 KB n = 9, 110 is a correct answer
3 Correct 0 ms 348 KB n = 4, 21 is a correct answer
4 Correct 0 ms 604 KB n = 3, 4 is a correct answer
5 Correct 0 ms 348 KB n = 2, 62 is a correct answer
6 Correct 1 ms 348 KB n = 2, 3 is a correct answer
7 Correct 1 ms 348 KB n = 3, 29 is a correct answer
8 Correct 0 ms 348 KB n = 2, 3 is a correct answer
9 Correct 0 ms 460 KB n = 2, 3 is a correct answer
10 Correct 0 ms 348 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 348 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 348 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 348 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 348 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 452 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 348 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 348 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 348 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 348 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 348 KB n = 5, 12 is a correct answer
21 Correct 0 ms 348 KB n = 5, 25 is a correct answer
22 Correct 0 ms 348 KB n = 2, 122 is a correct answer
23 Correct 1 ms 348 KB n = 10, 117 is a correct answer
24 Correct 1 ms 348 KB n = 10, 336 is a correct answer
25 Correct 1 ms 348 KB n = 10, 438 is a correct answer
26 Correct 1 ms 348 KB n = 10, 206 is a correct answer
27 Correct 1 ms 348 KB n = 10, 636 is a correct answer
28 Correct 1 ms 348 KB n = 4, 2399 is a correct answer
29 Correct 1 ms 348 KB n = 10, 10992 is a correct answer
30 Correct 1 ms 348 KB n = 10, 3112 is a correct answer
31 Execution timed out 2099 ms 3236 KB Time limit exceeded
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB n = 4, 80 is a correct answer
2 Correct 1 ms 348 KB n = 9, 110 is a correct answer
3 Correct 0 ms 348 KB n = 4, 21 is a correct answer
4 Correct 0 ms 604 KB n = 3, 4 is a correct answer
5 Correct 0 ms 348 KB n = 2, 62 is a correct answer
6 Correct 1 ms 348 KB n = 2, 3 is a correct answer
7 Correct 1 ms 348 KB n = 3, 29 is a correct answer
8 Correct 0 ms 348 KB n = 2, 3 is a correct answer
9 Correct 0 ms 460 KB n = 2, 3 is a correct answer
10 Correct 0 ms 348 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 348 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 348 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 348 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 348 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 452 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 348 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 348 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 348 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 348 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 348 KB n = 5, 12 is a correct answer
21 Correct 0 ms 348 KB n = 5, 25 is a correct answer
22 Correct 0 ms 348 KB n = 2, 122 is a correct answer
23 Correct 1 ms 348 KB n = 10, 117 is a correct answer
24 Correct 1 ms 348 KB n = 10, 336 is a correct answer
25 Correct 1 ms 348 KB n = 10, 438 is a correct answer
26 Correct 1 ms 348 KB n = 10, 206 is a correct answer
27 Correct 1 ms 348 KB n = 10, 636 is a correct answer
28 Correct 1 ms 348 KB n = 4, 2399 is a correct answer
29 Correct 1 ms 348 KB n = 10, 10992 is a correct answer
30 Correct 1 ms 348 KB n = 10, 3112 is a correct answer
31 Execution timed out 2099 ms 3236 KB Time limit exceeded
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB n = 4, 80 is a correct answer
2 Correct 1 ms 348 KB n = 9, 110 is a correct answer
3 Correct 0 ms 348 KB n = 4, 21 is a correct answer
4 Correct 0 ms 604 KB n = 3, 4 is a correct answer
5 Correct 0 ms 348 KB n = 2, 62 is a correct answer
6 Correct 1 ms 348 KB n = 2, 3 is a correct answer
7 Correct 1 ms 348 KB n = 3, 29 is a correct answer
8 Correct 0 ms 348 KB n = 2, 3 is a correct answer
9 Correct 0 ms 460 KB n = 2, 3 is a correct answer
10 Correct 0 ms 348 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 348 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 348 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 348 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 348 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 452 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 348 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 348 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 348 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 348 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 348 KB n = 5, 12 is a correct answer
21 Correct 0 ms 348 KB n = 5, 25 is a correct answer
22 Correct 0 ms 348 KB n = 2, 122 is a correct answer
23 Correct 1 ms 348 KB n = 10, 117 is a correct answer
24 Correct 1 ms 348 KB n = 10, 336 is a correct answer
25 Correct 1 ms 348 KB n = 10, 438 is a correct answer
26 Correct 1 ms 348 KB n = 10, 206 is a correct answer
27 Correct 1 ms 348 KB n = 10, 636 is a correct answer
28 Correct 1 ms 348 KB n = 4, 2399 is a correct answer
29 Correct 1 ms 348 KB n = 10, 10992 is a correct answer
30 Correct 1 ms 348 KB n = 10, 3112 is a correct answer
31 Execution timed out 2099 ms 3236 KB Time limit exceeded
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB n = 4, 80 is a correct answer
2 Correct 1 ms 348 KB n = 9, 110 is a correct answer
3 Correct 0 ms 348 KB n = 4, 21 is a correct answer
4 Correct 0 ms 604 KB n = 3, 4 is a correct answer
5 Correct 0 ms 348 KB n = 2, 62 is a correct answer
6 Correct 1 ms 348 KB n = 2, 3 is a correct answer
7 Correct 1 ms 348 KB n = 3, 29 is a correct answer
8 Correct 0 ms 348 KB n = 2, 3 is a correct answer
9 Correct 0 ms 460 KB n = 2, 3 is a correct answer
10 Correct 0 ms 348 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 348 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 348 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 348 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 348 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 452 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 348 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 348 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 348 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 348 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 348 KB n = 5, 12 is a correct answer
21 Correct 0 ms 348 KB n = 5, 25 is a correct answer
22 Correct 0 ms 348 KB n = 2, 122 is a correct answer
23 Correct 1 ms 348 KB n = 10, 117 is a correct answer
24 Correct 1 ms 348 KB n = 10, 336 is a correct answer
25 Correct 1 ms 348 KB n = 10, 438 is a correct answer
26 Correct 1 ms 348 KB n = 10, 206 is a correct answer
27 Correct 1 ms 348 KB n = 10, 636 is a correct answer
28 Correct 1 ms 348 KB n = 4, 2399 is a correct answer
29 Correct 1 ms 348 KB n = 10, 10992 is a correct answer
30 Correct 1 ms 348 KB n = 10, 3112 is a correct answer
31 Execution timed out 2099 ms 3236 KB Time limit exceeded
32 Halted 0 ms 0 KB -