Submission #1246879

#TimeUsernameProblemLanguageResultExecution timeMemory
1246879sofiefuVision Program (IOI19_vision)C++20
0 / 100
52 ms1216 KiB
#include <bits/stdc++.h>
#include "vision.h"
using namespace std;

#define vo vector
#define pb push_back
#define fi first 
#define se second 
#define all(x) x.begin(), x.end()
typedef vector<signed> vs;
typedef vector<int> vi;
typedef pair<int, int> pii;

#define rep(i, a, b) for(int i=(a); i<(b);i++)
#define repd(i, a, b) for(int i=(b-1); i>=a;i--)
#define pr(x) cerr << #x << " = " << x << endl;
mt19937 mt_rng(chrono::steady_clock::now().time_since_epoch().count());
int rand(int l, int r){
    return uniform_int_distribution<int>(l, r)(mt_rng);
}
int const inf = 1e9, mxn = 1e5+5;
int n, m;

void construct_network(int R, int C, int K){
    vo<vi> where(R, vi(C, -1));

    vo<pii> test;
    rep(i, 0, R){
        rep(u, 0, C){
            test.pb({i, u});
        }
    }
    shuffle(all(test), mt_rng);

    int X = 2000;
    rep(_, 0, X){
        auto [i, u] = test[_];
        vi op;
        rep(a, 0, R){
            rep(b, 0, C){
                int d = abs(i-a) + abs(u-b);
                if(d==K) op.pb(a*C+b);
            }
        }
        if(op.size()) where[i][u] = add_or(op);
    }

    vi last;
    rep(i, 0, R){
        rep(u, 0, C){
            if(where[i][u]==-1) continue;
            vi op = {i*C+u, where[i][u]};
            last.pb(add_and(op));
        }
    }
    add_or(last);
}

/*
1 1 1 

*/
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...