Submission #1275700

#TimeUsernameProblemLanguageResultExecution timeMemory
1275700benyJakarta Skyscrapers (APIO15_skyscraper)C++20
10 / 100
1 ms832 KiB
#include<bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; #pragma GCC optimize("O3") #pragma GCC optimization("Ofast,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #define ll long long //#define smid (nl + nr) / 2 //#define lc id * 2 //#define rc id * 2 + 1 #define migmig std::ios_base::sync_with_stdio(false);std::cin.tie(NULL);std::cout.tie(NULL); template <class T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag,tree_order_statistics_node_update>; const int N = 3005; int dis1[N][N]; vector<int> doge[N]; void solve() { int n, m; cin >> n >> m; int bb, pp; for (int i = 0; i < m; i++) { int b, p; cin >> b >> p; doge[b].push_back(p); if (i == 1) { bb = b; pp = p; } } for (int i = 0; i <= n; i++) { for (int j = 0; j <= 2000; j++) { dis1[i][j] = -1; } } deque<pair<int, int>> q; for (int p : doge[0]) { dis1[0][p] = 0; q.push_back({ 0, p }); } while (!q.empty()) { int v = q.front().first; int p = q.front().second; q.pop_front(); if (v - p >= 0) { if (dis1[v - p][p] == -1) { dis1[v - p][p] = dis1[v][p] + 1; q.push_back({ v - p, p }); } } if (v + p < n) { if (dis1[v + p][p] == -1) { dis1[v + p][p] = dis1[v][p] + 1; q.push_back({ v + p, p }); } } for (int pp : doge[v]) { if (dis1[v][pp] == -1) { dis1[v][pp] = dis1[v][p]; q.push_front({ v, pp }); } } } cout << dis1[bb][pp]; } int main() { migmig; int T = 1; //cin >> T; while (T--) { solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...