제출 #1233795

#제출 시각아이디문제언어결과실행 시간메모리
1233795veehjVision Program (IOI19_vision)C++17
0 / 100
3 ms760 KiB
#include "vision.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define fi first
#define se second
#define pb push_back
#define sz(a) (ll) a.size()
#define all(x) (x).begin(), (x).end()
#define rep(i, a, b) for(ll i=(ll)(a); i<(ll)(b); i++)
#define rrep(i, a, b) for(ll i=(ll)(a); i>=(ll)(b); i--)
#define vl vector<ll>
#define vpll vector<pair<ll, ll>>
#define vvl vector<vector<ll>>
#define pll pair<ll, ll>
vector<int> dy={0, 0, -1, 1}, dx={-1, 1, 0, 0};

void construct_network(int h, int w, int k) {
  vector<int> v, Ns;
  for(int i=0; i<h*w; i+=2){
    v.pb(i);
  }
  ll l=0, r=sz(v);
  int ret=add_xor(v);
  if(ret==0){
    return;
  }
  while(l!=r){
    ll mid=(l+r)>>1;
    Ns={};
    rep(i, l, mid+1){
      Ns.pb(v[i]);
    }
    int ret=add_or(Ns);
    if(ret)r=mid;
    else l=mid+1;
  }
  Ns={};
  for(int i=0; i<4; i++){
    int r=v[l]%w, c=v[l]/w;
    if(((r+dx[i])+(c+dy[i])*w) < h*w && ((r+dx[i])+(c+dy[i])*w) >= 0){
      Ns.pb((r+dx[i])+(c+dy[i])*w);
    }
  }
  add_xor(Ns);
}
#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...