Submission #948586

# Submission time Handle Problem Language Result Execution time Memory
948586 2024-03-18T08:04:55 Z steveonalex Jakarta Skyscrapers (APIO15_skyscraper) C++14
22 / 100
165 ms 262144 KB
#include <bits/stdc++.h>
 
using namespace std;
 
typedef long long ll;
typedef unsigned long long ull;
 
#define MASK(i) (1ULL << (i))
#define GETBIT(mask, i) (((mask) >> (i)) & 1)
#define ALL(v) (v).begin(), (v).end()
 
ll max(ll a, ll b){return (a > b) ? a : b;}
ll min(ll a, ll b){return (a < b) ? a : b;}
 
ll LASTBIT(ll mask){return (mask) & (-mask);}
int pop_cnt(ll mask){return __builtin_popcountll(mask);}
int ctz(ll mask){return __builtin_ctzll(mask);}
int logOf(ll mask){return 63 - __builtin_clzll(mask);}
 
mt19937_64 rng(chrono::high_resolution_clock::now().time_since_epoch().count());
ll rngesus(ll l, ll r){return l + (ull) rng() % (r - l + 1);}
 
template <class T1, class T2>
    bool maximize(T1 &a, T2 b){
        if (a < b) {a = b; return true;}
        return false;
    }
 
template <class T1, class T2>
    bool minimize(T1 &a, T2 b){
        if (a > b) {a = b; return true;}
        return false;
    }
 
template <class T>
    void printArr(T& container, string separator = " ", string finish = "\n", ostream &out = cout){
        for(auto item: container) out << item << separator;
        out << finish;
    }
 
template <class T>
    void remove_dup(vector<T> &a){
        sort(ALL(a));
        a.resize(unique(ALL(a)) - a.begin());
    }
 
const int N = 3e4 + 69;
const int INF = 1e9 + 69;
 
int n, m;
vector<int> a[N];
bool activated[N];
vector<int> pos[N], di[N];
 
int main(void){
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
 
    cin >> n >> m;
    vector<pair<int, int>> dog(m);
    for(int i = 0; i<m; ++i){
        cin >> dog[i].first >> dog[i].second;
    }
 
    pair<int, int> dog0 = dog[0], dog1 = dog[1];
 
    remove_dup(dog);
 
    for(auto i: dog) a[i.first].push_back(i.second);
    for(int i = 0; i<N; ++i) {
        for(int j = 0; j<n; ++j) pos[i].push_back(j);
        di[i].resize(pos[i].size(), INF);
    }
    // for(auto i: dog) pos[i.second].push_back(i.first % i.second);
    // for(int i = 1; i<=n; ++i){
    //     vector<int> sigma = pos[i]; pos[i].clear();
    //     remove_dup(sigma);
    //     for(int j: sigma){
    //         for(int k = j; k < n; k += i) pos[i].push_back(k);
    //     }
    //     sort(ALL(pos[i]));
    //     di[i].resize(pos[i].size(), INF);
    // }
 
    int o_cnt = 0;
    int ans = INF;
    deque<pair<int, int>> q;
    q.push_back(dog0); 
    di[dog0.second][dog0.first] = 0;
    while(q.size()){
        pair<int, int> u = q.front(); q.pop_front();
        int d = di[u.second][u.first];
 
        o_cnt++;
        if (o_cnt > 6e6) exit(1);
 
        if (u.first == dog1.first) {
            minimize(ans, d);
            break;
        }
 
        for(int i = -u.second; i <= u.second; i += u.second * 2) {
            pair<int, int> v = {u.first + i, u.second};
            if (v.first < 0 || v.first >= n) continue;
            if (v.second < 1 || v.second > n) exit(1);
            if (minimize(di[v.second][v.first], d + 1)) 
                q.push_back(v);
        }
        if (!activated[u.first]){
            activated[u.first] = true;
            for(int j: a[u.first]){
                for(int i = -j; i <= j; i += j * 2) {
                    pair<int, int> v = {u.first + i, j};
                    if (v.first < 0 || v.first >= n) continue;
                    if (v.second < 1 || v.second > n) exit(1);
                    if (minimize(di[v.second][v.first], d + 1)) 
                        q.push_back(v);
                }
            }
        }
    }
 
    if (ans == INF) cout << -1 << "\n";
    else cout << ans << "\n";
 
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 7 ms 4696 KB Output is correct
2 Correct 3 ms 4444 KB Output is correct
3 Correct 6 ms 4864 KB Output is correct
4 Correct 7 ms 5212 KB Output is correct
5 Correct 8 ms 6112 KB Output is correct
6 Correct 8 ms 6236 KB Output is correct
7 Correct 8 ms 6236 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 4700 KB Output is correct
2 Correct 3 ms 4444 KB Output is correct
3 Correct 6 ms 4700 KB Output is correct
4 Correct 7 ms 5208 KB Output is correct
5 Correct 8 ms 6236 KB Output is correct
6 Correct 8 ms 6316 KB Output is correct
7 Correct 8 ms 6236 KB Output is correct
8 Correct 14 ms 15196 KB Output is correct
9 Correct 15 ms 17996 KB Output is correct
10 Correct 22 ms 30348 KB Output is correct
11 Correct 23 ms 30300 KB Output is correct
12 Correct 23 ms 30212 KB Output is correct
13 Correct 24 ms 30300 KB Output is correct
14 Correct 24 ms 30300 KB Output is correct
15 Correct 23 ms 30296 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 4700 KB Output is correct
2 Correct 3 ms 4444 KB Output is correct
3 Correct 7 ms 4700 KB Output is correct
4 Correct 6 ms 5212 KB Output is correct
5 Correct 8 ms 6232 KB Output is correct
6 Correct 8 ms 6236 KB Output is correct
7 Correct 8 ms 6348 KB Output is correct
8 Correct 13 ms 15196 KB Output is correct
9 Correct 15 ms 18012 KB Output is correct
10 Correct 23 ms 30144 KB Output is correct
11 Correct 23 ms 30292 KB Output is correct
12 Correct 25 ms 30288 KB Output is correct
13 Correct 23 ms 30300 KB Output is correct
14 Correct 22 ms 30300 KB Output is correct
15 Correct 24 ms 30300 KB Output is correct
16 Correct 37 ms 57180 KB Output is correct
17 Correct 114 ms 211124 KB Output is correct
18 Runtime error 165 ms 262144 KB Execution killed with signal 9
19 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 4700 KB Output is correct
2 Correct 3 ms 4444 KB Output is correct
3 Correct 6 ms 4696 KB Output is correct
4 Correct 7 ms 5204 KB Output is correct
5 Correct 8 ms 6232 KB Output is correct
6 Correct 8 ms 6236 KB Output is correct
7 Correct 8 ms 6296 KB Output is correct
8 Correct 14 ms 15196 KB Output is correct
9 Correct 17 ms 18012 KB Output is correct
10 Correct 23 ms 30300 KB Output is correct
11 Correct 22 ms 30300 KB Output is correct
12 Correct 23 ms 30296 KB Output is correct
13 Correct 25 ms 30300 KB Output is correct
14 Correct 26 ms 30264 KB Output is correct
15 Correct 23 ms 30328 KB Output is correct
16 Correct 37 ms 57180 KB Output is correct
17 Correct 139 ms 210992 KB Output is correct
18 Runtime error 139 ms 262144 KB Execution killed with signal 9
19 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 4696 KB Output is correct
2 Correct 4 ms 4444 KB Output is correct
3 Correct 6 ms 4700 KB Output is correct
4 Correct 6 ms 5404 KB Output is correct
5 Correct 8 ms 6236 KB Output is correct
6 Correct 7 ms 6236 KB Output is correct
7 Correct 8 ms 6236 KB Output is correct
8 Correct 14 ms 15196 KB Output is correct
9 Correct 22 ms 18112 KB Output is correct
10 Correct 23 ms 30288 KB Output is correct
11 Correct 24 ms 30300 KB Output is correct
12 Correct 23 ms 30300 KB Output is correct
13 Correct 23 ms 30300 KB Output is correct
14 Correct 23 ms 30300 KB Output is correct
15 Correct 23 ms 30300 KB Output is correct
16 Correct 35 ms 57168 KB Output is correct
17 Correct 142 ms 210916 KB Output is correct
18 Runtime error 137 ms 262144 KB Execution killed with signal 9
19 Halted 0 ms 0 KB -