Submission #352455

# Submission time Handle Problem Language Result Execution time Memory
352455 2021-01-20T21:24:48 Z AmineWeslati Jakarta Skyscrapers (APIO15_skyscraper) C++14
57 / 100
287 ms 262148 KB
//Never stop trying
#include "bits/stdc++.h"
using namespace std;
#define boost ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)

typedef long long ll;
#define int ll
typedef string str;
typedef long double ld;
typedef pair<int, int> pi;
#define fi first
#define se second
typedef vector<int> vi;
typedef vector<pi> vpi;
#define pb push_back
#define eb emplace_back
#define sz(x) (int)x.size()
#define all(x) begin(x), end(x)
#define rall(x) rbegin(x), rend(x)
#define endl "\n"
#define FOR(i,a,b) for (int i = (a); i < (b); ++i)
#define ROF(i,a,b) for (int i = (b)-1; i >= (a); --i)

const int MOD = 1e9 + 7; //998244353
const ll INF = 1e18;
const int MX = 3e4 + 10;
const int nx[4] = {0, 0, 1, -1}, ny[4] = {1, -1, 0, 0}; //right left down up

template<class T> using V = vector<T>;
template<class T> bool ckmin(T& a, const T& b) { return a > b ? a = b, 1 : 0; }
template<class T> bool ckmax(T& a, const T& b) { return a < b ? a = b, 1 : 0; }
ll cdiv(ll a, ll b) { return a / b + ((a ^ b) > 0 && a % b); } // divide a by b rounded up
//constexpr int log2(int x) { return 31 - __builtin_clz(x); } // floor(log2(x))

mt19937 rng(chrono::system_clock::now().time_since_epoch().count());
//mt19937_64 rng(chrono::system_clock::now().time_since_epoch().count());
ll random(ll a, ll b){
    return a + rng() % (b - a + 1);
}
#ifndef LOCAL  
#define cerr if(false) cerr
#endif
#define dbg(x) cerr << #x << " : " << x << endl; 
#define dbgs(x,y) cerr << #x << " : " << x << " / " << #y << " : " << y << endl;
#define dbgv(v) cerr << #v << " : " << "[ "; for(auto it : v) cerr << it << ' '; cerr << ']' << endl;
#define here() cerr << "here" << endl;

void IO() {
#ifdef LOCAL
    freopen("input.txt", "r", stdin); 
    freopen("output.txt", "w", stdout);
#endif
}
/////////////////////////ONLY CLEAN CODES ALLOWED/////////////////////////

const int mxP=200;
int N,M; 
vi pos(MX),vec[MX],P(MX);

V<pair<pi,int>> adj[MX][mxP+1];

int32_t main() {
    boost; IO();

    cin>>N>>M;
    FOR(i,0,M){
    	cin>>pos[i]>>P[i];
    	if(P[i]<=mxP) vec[pos[i]].pb(P[i]);
	}

	FOR(i,0,N){
		FOR(j,0,mxP+1){
			if(i+j<N){
				adj[i][j].pb({{i+j,j},1});
				adj[i][j].pb({{i+j,0},1});
			}
			if(i-j>=0){
				adj[i][j].pb({{i-j,j},1});
				adj[i][j].pb({{i-j,0},1});
			}
		}

		for(auto j: vec[i]) adj[i][0].pb({{i,j},0});
	}
	FOR(i,0,M) if(P[i]>mxP){
		int x=pos[i],jump=0;
		while(x+P[i]*(jump+1)<N){
			jump++;
			adj[x][0].pb({{x+P[i]*jump,0},jump});
		}
		jump=0;
		while(x-P[i]*(jump+1)>=0){
			jump++;
			adj[x][0].pb({{x-P[i]*jump,0},jump});
		}
	}


	priority_queue<pair<int,pi>,V<pair<int,pi>>,greater<pair<int,pi>>>q;
	q.push({0,{pos[0],0}});
	int dist[N][mxP+1]; FOR(i,0,N) FOR(j,0,mxP+1) dist[i][j]=INF;
	dist[pos[0]][0]=0;

	while(!q.empty()){
		int u=q.top().se.fi,p=q.top().se.se,d=q.top().fi;
		q.pop();
		if(dist[u][p]<d) continue;
		for(auto it: adj[u][p]){
			int v=it.fi.fi,pp=it.fi.se,w=it.se;
			if(dist[v][pp]>d+w){
				dist[v][pp]=d+w;
				q.push({dist[v][pp],{v,pp}});
			}
		}
	}

	int ans=dist[pos[1]][0];
	if(ans==INF) ans=-1;
	cout << ans << endl;

    

    return 0;
}

/*
(pos,power)-->(pos+-power,power) (<=sqrt(N))
(pos,power)-->(pos+-power,0) (<=sqrt(N))
(pos,0)--> (pos,power) (all powers in that pos) (<=sqrt(N))
(pos,0)-->(nw_pos,0) (>sqrt(N))

*/
//Change your approach 
# Verdict Execution time Memory Grader output
1 Correct 98 ms 143212 KB Output is correct
2 Correct 97 ms 143212 KB Output is correct
3 Correct 96 ms 143212 KB Output is correct
4 Correct 96 ms 143212 KB Output is correct
5 Correct 97 ms 143212 KB Output is correct
6 Correct 98 ms 143212 KB Output is correct
7 Correct 96 ms 143212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 98 ms 143212 KB Output is correct
2 Correct 97 ms 143196 KB Output is correct
3 Correct 97 ms 143212 KB Output is correct
4 Correct 96 ms 143212 KB Output is correct
5 Correct 96 ms 143212 KB Output is correct
6 Correct 98 ms 143316 KB Output is correct
7 Correct 97 ms 143212 KB Output is correct
8 Correct 96 ms 143468 KB Output is correct
9 Correct 97 ms 143596 KB Output is correct
10 Correct 98 ms 143980 KB Output is correct
11 Correct 101 ms 144108 KB Output is correct
12 Correct 100 ms 144108 KB Output is correct
13 Correct 98 ms 143980 KB Output is correct
14 Correct 99 ms 144108 KB Output is correct
15 Correct 99 ms 144236 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 97 ms 143212 KB Output is correct
2 Correct 98 ms 143212 KB Output is correct
3 Correct 97 ms 143232 KB Output is correct
4 Correct 97 ms 143212 KB Output is correct
5 Correct 97 ms 143212 KB Output is correct
6 Correct 96 ms 143212 KB Output is correct
7 Correct 98 ms 143144 KB Output is correct
8 Correct 98 ms 143340 KB Output is correct
9 Correct 97 ms 143468 KB Output is correct
10 Correct 99 ms 143980 KB Output is correct
11 Correct 100 ms 144236 KB Output is correct
12 Correct 99 ms 143980 KB Output is correct
13 Correct 100 ms 144108 KB Output is correct
14 Correct 100 ms 144108 KB Output is correct
15 Correct 99 ms 144108 KB Output is correct
16 Correct 114 ms 145900 KB Output is correct
17 Correct 128 ms 158956 KB Output is correct
18 Correct 154 ms 182764 KB Output is correct
19 Correct 166 ms 188524 KB Output is correct
20 Correct 168 ms 188780 KB Output is correct
21 Correct 109 ms 150508 KB Output is correct
22 Correct 161 ms 183532 KB Output is correct
23 Correct 153 ms 179180 KB Output is correct
24 Correct 170 ms 186348 KB Output is correct
25 Correct 169 ms 188780 KB Output is correct
26 Correct 166 ms 188524 KB Output is correct
27 Correct 167 ms 188524 KB Output is correct
28 Correct 174 ms 188652 KB Output is correct
29 Correct 184 ms 188548 KB Output is correct
30 Correct 166 ms 188652 KB Output is correct
31 Correct 176 ms 188652 KB Output is correct
32 Correct 170 ms 188780 KB Output is correct
33 Correct 200 ms 188780 KB Output is correct
34 Correct 203 ms 188780 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 97 ms 143212 KB Output is correct
2 Correct 97 ms 143212 KB Output is correct
3 Correct 97 ms 143160 KB Output is correct
4 Correct 96 ms 143212 KB Output is correct
5 Correct 97 ms 143212 KB Output is correct
6 Correct 97 ms 143212 KB Output is correct
7 Correct 98 ms 143212 KB Output is correct
8 Correct 98 ms 143332 KB Output is correct
9 Correct 97 ms 143468 KB Output is correct
10 Correct 100 ms 143980 KB Output is correct
11 Correct 100 ms 144236 KB Output is correct
12 Correct 97 ms 143980 KB Output is correct
13 Correct 98 ms 143980 KB Output is correct
14 Correct 99 ms 144108 KB Output is correct
15 Correct 99 ms 144108 KB Output is correct
16 Correct 100 ms 145900 KB Output is correct
17 Correct 126 ms 158956 KB Output is correct
18 Correct 158 ms 182636 KB Output is correct
19 Correct 172 ms 188652 KB Output is correct
20 Correct 166 ms 188780 KB Output is correct
21 Correct 110 ms 150508 KB Output is correct
22 Correct 163 ms 183532 KB Output is correct
23 Correct 153 ms 179180 KB Output is correct
24 Correct 174 ms 186348 KB Output is correct
25 Correct 167 ms 188780 KB Output is correct
26 Correct 169 ms 188524 KB Output is correct
27 Correct 165 ms 188532 KB Output is correct
28 Correct 176 ms 188908 KB Output is correct
29 Correct 184 ms 188552 KB Output is correct
30 Correct 171 ms 188524 KB Output is correct
31 Correct 176 ms 188524 KB Output is correct
32 Correct 174 ms 188652 KB Output is correct
33 Correct 206 ms 188780 KB Output is correct
34 Correct 204 ms 188888 KB Output is correct
35 Correct 180 ms 176876 KB Output is correct
36 Correct 139 ms 167276 KB Output is correct
37 Correct 226 ms 190060 KB Output is correct
38 Correct 219 ms 191280 KB Output is correct
39 Correct 218 ms 191468 KB Output is correct
40 Correct 221 ms 191332 KB Output is correct
41 Correct 219 ms 191284 KB Output is correct
42 Correct 170 ms 189568 KB Output is correct
43 Correct 177 ms 189672 KB Output is correct
44 Correct 171 ms 189964 KB Output is correct
45 Correct 282 ms 193792 KB Output is correct
46 Correct 283 ms 193920 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 95 ms 143212 KB Output is correct
2 Correct 98 ms 143212 KB Output is correct
3 Correct 104 ms 143212 KB Output is correct
4 Correct 98 ms 143212 KB Output is correct
5 Correct 99 ms 143212 KB Output is correct
6 Correct 98 ms 143212 KB Output is correct
7 Correct 96 ms 143212 KB Output is correct
8 Correct 97 ms 143468 KB Output is correct
9 Correct 98 ms 143596 KB Output is correct
10 Correct 99 ms 143980 KB Output is correct
11 Correct 99 ms 144108 KB Output is correct
12 Correct 99 ms 143980 KB Output is correct
13 Correct 100 ms 143980 KB Output is correct
14 Correct 100 ms 144236 KB Output is correct
15 Correct 101 ms 144108 KB Output is correct
16 Correct 100 ms 145900 KB Output is correct
17 Correct 135 ms 159084 KB Output is correct
18 Correct 156 ms 182764 KB Output is correct
19 Correct 161 ms 188524 KB Output is correct
20 Correct 168 ms 188780 KB Output is correct
21 Correct 109 ms 150508 KB Output is correct
22 Correct 159 ms 183424 KB Output is correct
23 Correct 152 ms 179180 KB Output is correct
24 Correct 171 ms 186344 KB Output is correct
25 Correct 168 ms 188652 KB Output is correct
26 Correct 164 ms 188524 KB Output is correct
27 Correct 164 ms 188524 KB Output is correct
28 Correct 178 ms 188780 KB Output is correct
29 Correct 198 ms 188524 KB Output is correct
30 Correct 168 ms 188524 KB Output is correct
31 Correct 173 ms 188652 KB Output is correct
32 Correct 173 ms 188652 KB Output is correct
33 Correct 200 ms 188780 KB Output is correct
34 Correct 201 ms 188908 KB Output is correct
35 Correct 179 ms 177004 KB Output is correct
36 Correct 138 ms 167276 KB Output is correct
37 Correct 227 ms 190124 KB Output is correct
38 Correct 218 ms 191256 KB Output is correct
39 Correct 223 ms 191340 KB Output is correct
40 Correct 222 ms 191340 KB Output is correct
41 Correct 223 ms 191340 KB Output is correct
42 Correct 172 ms 189668 KB Output is correct
43 Correct 177 ms 189788 KB Output is correct
44 Correct 170 ms 189964 KB Output is correct
45 Correct 283 ms 193792 KB Output is correct
46 Correct 287 ms 193932 KB Output is correct
47 Runtime error 260 ms 262148 KB Execution killed with signal 9
48 Halted 0 ms 0 KB -