Submission #1147892

#TimeUsernameProblemLanguageResultExecution timeMemory
1147892njoopOBELISK (NOI14_obelisk)C++17
0 / 25
428 ms327680 KiB
#include <bits/stdc++.h>
#define int long long
#define ti tuple<int, int, int>
using namespace std;

const int mxf = 505, mxh = 105;
int k, m, h, cx, cy, cd, cf, ch, nd, nf, nh, sp[mxf][mxh];
vector<pair<int, int>> fl[mxf];
vector<ti> g[mxf][mxh];
priority_queue<ti, vector<ti>, greater<ti>> pq;

int findBDis(int dx, int dy) {
    int dis = 0;
    if(dx != 0) dis += dx+2;
    if(dy != 0) dis += dy+2;
    return dis;
}

int findDis(int x1, int y1, int x2, int y2) {
    int dis=0, dx = abs(x2-x1), dy = abs(y2-y1);
    dis += dx/(m+1)*2;
    dx %= m+1;
    dis += dy/(m+1)*2;
    dy %= m+1;
    return dis + min({findBDis(dx, dy), findBDis(abs(dx-m-1), dy)+2, findBDis(dx, abs(dy-m-1))+2, findBDis(abs(dx-m-1), abs(dy-m-1)+4)});
}

signed main() {
    cin.tie(0)->sync_with_stdio(0);
    cin >> k >> m;
    cin >> cx >> cy;
    fl[0].push_back({cx, cy});
    cin >> cx >> cy;
    fl[k].push_back({cx, cy});
    for(int i=1; i<=k; i++) {
        cin >> h;
        h--;
        while(h--) {
            cin >> cx >> cy;
            fl[i].push_back({cx, cy});
        }
    }
    for(int i=0; i<505; i++) {
        for(int j=0; j<105; j++) {
            sp[i][j] = 1e18;
        }
    }
    cout << sp[k][0];
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...