# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
414598 | ollel | Vision Program (IOI19_vision) | C++14 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include <iostream>
#include "vision.h"
using namespace std;
#define rep(i,a,b) for(int i = a; i < b; i++)
#define pb push_back
typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int,int> pii;
int h, w, k, inst;
// bool add_or(vi& q) {
// cout << "or:\n";
// for(auto &i : q) cout << i << " ";cout<<endl;
// bool ans; cin >> ans;
// return ans;
// }
//
// bool add_not(int x ) {
// cout << "not:\n";
// cout << x << endl;
// bool ans; cin >> ans; return ans;
// }
//
// bool add_and(vi& q) {
// cout << "and:\n";
// for(auto &i : q) cout << i << " ";cout<<endl;
// bool ans; cin >> ans;
// return ans;
// }
kone()
{
vi rows;
rep(i, 0, h) {
vi indices;
rep(j, 0, w) indices.pb(j + i*w);
rows.pb(add_or(indices));
}
vi cols;
rep(j, 0, w) {
vi indices;
rep(i, 0, h) indices.pb(j + i*w);
cols.pb(add_or(indices));
}
vi adjc;
rep(i, 0, w - 1) {
adjc.pb(add_and(cols[i], cols[i + 1]));
}
vi adjr;
rep(i, 0, h - 1) {
adjr.pb(add_and(rows[i], rows[i + 1]));
}
vi pos;
pos.pb(add_and(add_xor(rows), add_or(adjc)));
pos.pb(add_and(add_xor(cols), add_or(adjr)));
add_or(pos);
}
void construct_network(int H, int W, int K)
{
h = H; w = W; k = K; inst = h * w;
if (k == 1) kone();
int fi = inst;
rep(x, 0, w) rep(y, 0, h) {
vi ask = {x+y*w};
rep(x2, 0, w) rep(y2, 0, h) {
if (abs(x2 - x) + abs(y2 - y) == k) {
vi ask = {x+y*w, x2+y2*w};
inst = add_and(ask);
}
}
}
vi ask;
rep(i,fi,inst+1) ask.pb(i);
add_or(ask);
}
// int main() {
// int H ,W, K; cin >> H>>W>>K;construct_network(H, W, K);
// }