제출 #590428

#제출 시각아이디문제언어결과실행 시간메모리
590428farhan132Vision Program (IOI19_vision)C++17
12 / 100
179 ms2460 KiB
#include "vision.h" #include <bits/stdc++.h> using namespace std; typedef int ll; typedef pair<ll , ll> ii; #define ff first #define ss second #define pb push_back #define in insert ii num(ll m, ll x){ return {x/m, x%m}; } ll N,M; ll convo(ll x, ll y){ return x * (M) + y; } #define mem(a , b) memset(a, b ,sizeof(a)) mt19937 rng(chrono::system_clock::now().time_since_epoch().count()); bool check[204][204]; void construct_network(int H, int W, int K) { N = H, M = W; ll n = H * W - 1; vector < ll > a(n, 0); mem(check, 0); ll tmp1 = K; ll mod = 2; while(tmp1%2 == 0) tmp1/=2, mod *= 2; vector < ll > cnt(mod, 0); vector < ll > good(mod, 0); for(ll i = 0; i < H; i++){ for(ll j = 0; j < W; j++){ cnt[(i + j)%(mod)]++; } } for(ll i = 0; i < mod; i++){ if(cnt[i] <= cnt[(i + K)%(mod)]) good[i] = 1, good[(i + K)%(mod)] = 0; } //ll tot = 0; vector < ll > v; vector < ii > tmp; for(ll i = 0; i < H; i++){ for(ll j = 0; j < W; j++){ if(good[(i + j)%(mod)] == 0) continue; check[i][j] = 1; vector < ll > can; for(ll x = 0; x < H; x++){ for(ll y = 0; y < W; y++){ if((abs(x - i) + abs(y - j)) != K || check[x][y]) continue; can.pb(convo(x, y)); //cout << i << ' ' << j << ' ' << x << " " << y << '\n'; } } if(can.size()){ ll k = add_or(can); v.pb(add_and({k, convo(i, j)})); } } } add_or(v); } // 1,2,5,6
#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...