Submission #361452

# Submission time Handle Problem Language Result Execution time Memory
361452 2021-01-30T09:07:27 Z alireza_kaviani Jakarta Skyscrapers (APIO15_skyscraper) C++11
22 / 100
57 ms 60140 KB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;

#define all(x)						(x).begin(),(x).end()
#define X							first
#define Y							second
#define sep							' '
#define endl						'\n'
#define SZ(x)						ll(x.size())

const ll MAXN = 5e3 + 10;
const ll SQ = 200;
const ll LOG = 22;
const ll INF = 8e18;
const ll MOD = 1e9 + 7; //998244353; //1e9 + 9;

int n , m , ptr , q[MAXN * SQ * 4] , dist[MAXN * SQ * 2];
vector<int> adj[MAXN * SQ * 2];

void BFS(int v){
	fill(dist , dist + MAXN * SQ * 2 , MOD);
	dist[v] = 0;
	int ql = MAXN * SQ * 2 , qr = ql;
	q[qr++] = v;
	while(ql < qr){
		int v = q[ql++];
		for(int u : adj[v]){
			int cost = (v >= n + m && u >= n + m);
			if(dist[u] > dist[v] + cost){
				dist[u] = dist[v] + cost;
				if(cost == 0)	q[--ql] = u;
				else	q[qr++] = u;
			}
		}
	}
}

int main() {
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

	cin >> n >> m;
	ptr = n + m;
  	assert(n <= 2000);
	for(int i = 1 ; i < SQ ; i++){
		for(int j = 0 ; j + i < n ; j++){
			adj[ptr + j].push_back(ptr + j + i);
			adj[ptr + j + i].push_back(ptr + j);
		}
		for(int j = 0 ; j < n ; j++){
			adj[ptr + j].push_back(j);
		}
		ptr += n;
	}
	for(int i = 0 ; i < m ; i++){
		int x , y;
		cin >> x >> y;
		adj[x].push_back(n + i);
		if(y < SQ){
			adj[n + i].push_back(m + n * y + x);
			continue;
		}
		int z = x % y;
		for(int j = z ; j + y < n ; j += y){
			adj[ptr].push_back(ptr + 1);
			adj[ptr + 1].push_back(ptr);
			if(j == x){
				adj[n + i].push_back(ptr);
			}
			ptr++;
		}
		if(adj[n + i].size() == 0)	adj[n + i].push_back(ptr);
		ptr++;
	}
	BFS(n);
	/*for(int i = 0 ; i < ptr ; i++){
		cout << i << sep << dist[i] << endl;
	}*/
	cout << (dist[n + 1] == MOD ? -1 : dist[n + 1]) << endl;

    return 0;
}
/*

*/
# Verdict Execution time Memory Grader output
1 Correct 38 ms 55276 KB Output is correct
2 Correct 38 ms 55276 KB Output is correct
3 Correct 38 ms 55276 KB Output is correct
4 Correct 38 ms 55276 KB Output is correct
5 Correct 38 ms 55276 KB Output is correct
6 Correct 37 ms 55276 KB Output is correct
7 Correct 38 ms 55276 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 38 ms 55276 KB Output is correct
2 Correct 38 ms 55276 KB Output is correct
3 Correct 40 ms 55276 KB Output is correct
4 Correct 38 ms 55276 KB Output is correct
5 Correct 38 ms 55276 KB Output is correct
6 Correct 38 ms 55276 KB Output is correct
7 Correct 38 ms 55276 KB Output is correct
8 Correct 39 ms 55532 KB Output is correct
9 Correct 44 ms 55660 KB Output is correct
10 Correct 40 ms 56064 KB Output is correct
11 Correct 40 ms 56044 KB Output is correct
12 Correct 40 ms 55916 KB Output is correct
13 Correct 39 ms 56044 KB Output is correct
14 Correct 42 ms 56044 KB Output is correct
15 Correct 40 ms 56044 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 40 ms 55424 KB Output is correct
2 Correct 42 ms 55276 KB Output is correct
3 Correct 38 ms 55276 KB Output is correct
4 Correct 39 ms 55276 KB Output is correct
5 Correct 38 ms 55276 KB Output is correct
6 Correct 45 ms 55276 KB Output is correct
7 Correct 39 ms 55296 KB Output is correct
8 Correct 38 ms 55532 KB Output is correct
9 Correct 40 ms 55660 KB Output is correct
10 Correct 40 ms 55916 KB Output is correct
11 Correct 40 ms 56044 KB Output is correct
12 Correct 40 ms 55916 KB Output is correct
13 Correct 40 ms 56044 KB Output is correct
14 Correct 40 ms 56044 KB Output is correct
15 Correct 40 ms 56044 KB Output is correct
16 Correct 42 ms 56556 KB Output is correct
17 Incorrect 56 ms 60140 KB Output isn't correct
18 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 38 ms 55276 KB Output is correct
2 Correct 38 ms 55276 KB Output is correct
3 Correct 38 ms 55276 KB Output is correct
4 Correct 39 ms 55276 KB Output is correct
5 Correct 39 ms 55276 KB Output is correct
6 Correct 38 ms 55276 KB Output is correct
7 Correct 38 ms 55276 KB Output is correct
8 Correct 38 ms 55660 KB Output is correct
9 Correct 41 ms 55660 KB Output is correct
10 Correct 47 ms 55916 KB Output is correct
11 Correct 40 ms 55948 KB Output is correct
12 Correct 39 ms 55916 KB Output is correct
13 Correct 39 ms 55916 KB Output is correct
14 Correct 40 ms 56044 KB Output is correct
15 Correct 43 ms 56044 KB Output is correct
16 Correct 42 ms 56556 KB Output is correct
17 Incorrect 56 ms 60140 KB Output isn't correct
18 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 38 ms 55276 KB Output is correct
2 Correct 40 ms 55276 KB Output is correct
3 Correct 43 ms 55276 KB Output is correct
4 Correct 38 ms 55404 KB Output is correct
5 Correct 38 ms 55276 KB Output is correct
6 Correct 41 ms 55276 KB Output is correct
7 Correct 38 ms 55276 KB Output is correct
8 Correct 39 ms 55532 KB Output is correct
9 Correct 38 ms 55660 KB Output is correct
10 Correct 39 ms 55916 KB Output is correct
11 Correct 41 ms 56044 KB Output is correct
12 Correct 40 ms 55916 KB Output is correct
13 Correct 39 ms 55916 KB Output is correct
14 Correct 42 ms 56044 KB Output is correct
15 Correct 40 ms 56044 KB Output is correct
16 Correct 42 ms 56684 KB Output is correct
17 Incorrect 57 ms 60140 KB Output isn't correct
18 Halted 0 ms 0 KB -