답안 #723985

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
723985 2023-04-14T14:53:49 Z victor_gao Vision Program (IOI19_vision) C++17
0 / 100
32 ms 4204 KB
#include "vision.h"
#include <bits/stdc++.h>
#define pii pair<int,int>
#define x first
#define y second
#define MAXN 205
using namespace std;
int n,m,k,aho[2*MAXN],ahx[2*MAXN],awo[2*MAXN],awx[2*MAXN];
vector<int>ad[2*MAXN],ms[2*MAXN],hs,Ws;
vector<int>q[2];
void construct_network(int H, int W, int K) {
	n=H; m=W; k=K;
	for (int i=0;i<n;i++){
		for (int j=0;j<m;j++){
			ad[i+j].push_back(i*m+j);
			ms[i-j+m-1].push_back(i*m+j);
		}
	}
	int now=n*m-1;
	for (int i=0;i<=n+m-2;i++){
		vector<int>qus;
		if (i+k<=n+m-2){
			for (auto j:ad[i]) qus.push_back(j);
			int before;
			add_xor(qus); now++;
			before=now; qus.clear();
			for (auto j:ad[i+k]) qus.push_back(j);
			add_or(qus); now++;
			add_and({before,now}); now++;
			q[0].push_back(now);
		}
	}
	for (int i=0;i<=n+m-2;i++){
		vector<int>qus;
		if (i+k<=n+m-2){
			for (auto j:ms[i]) qus.push_back(j);
			int before;
			add_xor(qus); now++;
			before=now; qus.clear();
			for (auto j:ms[i+k]) qus.push_back(j);
			add_or(qus); now++;
			add_and({before,now}); now++;
			q[1].push_back(now);
		}
	}
	for (int i=0;i<n;i++){
		vector<int>qus;
		for (int j=0;j<m;j++)
			qus.push_back(i*m+j);
		aho[i]=add_or(qus); now++;
		qus.push_back(aho[i]);
		ahx[i]=add_xor(qus); now++;
	}
	for (int i=0;i<m;i++){
		vector<int>qus;
		for (int j=0;j<n;j++)
			qus.push_back(j*m+i);
		awo[i]=add_or(qus); now++;
		qus.push_back(aho[i]);
		awx[i]=add_xor(qus); now++;
	}
	for (int i=0;i<n;i++){
		vector<int>qus,qus1;
		for (int j=i;j<min(m,i+k+1);j++){
			qus.push_back(aho[i]);
			qus1.push_back(ahx[i]);
		}
		if (qus.empty()) continue;
		int p1=add_or(qus); now++;
		qus.push_back(p1);
		int p2=add_xor(qus); now++;
		qus1.push_back(p2);
		add_or(qus1); now++;
		hs.push_back(now);
	}
	for (int i=0;i<m;i++){
		vector<int>qus,qus1;
		for (int j=i;j<min(n,i+k+1);j++){
			qus.push_back(awo[i]);
			qus1.push_back(awx[i]);
		}
		if (qus.empty()) continue;
		int p1=add_or(qus); now++;
		qus.push_back(p1);
		int p2=add_xor(qus); now++;
		qus1.push_back(p2);
		add_or(qus1); now++;
		Ws.push_back(now);
	}
	vector<int>qus;
//	cout<<"Q : ";
	for (auto i:q[0]){
		qus.push_back(i);
//		cout<<i<<" ";
	}
//	cout<<'\n'<<"Q : ";
	for (auto i:q[1]){
		qus.push_back(i);
//		cout<<i<<" ";
	}
	/*
	cout<<'\n';
	
	cout<<"hs : ";
	for (auto i:hs) cout<<i<<" ";
	cout<<"\nWs : ";
	for (auto i:Ws) cout<<i<<' ';
	cout<<'\n'; 
	*/
	add_or(qus); now++;
	int have=now;
	qus.clear(); qus.push_back(have);
	add_or(hs); now++;
	qus.push_back(now);
	add_or(Ws); now++;
	qus.push_back(now);
	add_and(qus);
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB on inputs (0, 0), (0, 1), expected 1, but computed 0
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB on inputs (0, 0), (0, 1), expected 1, but computed 0
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB on inputs (0, 0), (0, 1), expected 1, but computed 0
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB on inputs (0, 0), (0, 1), expected 1, but computed 0
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 456 KB on inputs (0, 0), (0, 1), expected 1, but computed 0
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 4 ms 596 KB Output is correct
4 Incorrect 3 ms 596 KB on inputs (0, 0), (31, 0), expected 1, but computed 0
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 32 ms 4204 KB on inputs (126, 120), (176, 169), expected 0, but computed 1
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB on inputs (0, 0), (0, 1), expected 1, but computed 0
2 Halted 0 ms 0 KB -