답안 #682737

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
682737 2023-01-16T21:13:00 Z APROHACK Vision Program (IOI19_vision) C++14
0 / 100
11 ms 1140 KB
#include "vision.h"
#include <bits/stdc++.h>
#define ll long long
#define ff first
#define ss second
#define pb push_back
using namespace std;
int h, w, k;
bool valid(int x, int y){
	return (x < h && y < w && x >= 0 &&  y >= 0);
}
int coordenadasAPosicion (int x, int y){
	return x*w + y;
}


void construct_network(int H, int W, int K) {
	h = H, w = W, k = K;
	int cuenta = 0;
	vector<int>toOr;
	if(k != 1){
		for(int i = 0 ; i < H ; i ++){
			for(int j = 0 ; j < W ; j ++){
				if(i>0 || j>0)continue;
				if(valid(i, j)){
					vector<int>toXor;
					//cout << "Esto fue para " << i << " " << j << endl;
					for(int abajo = k ; abajo > -k ; abajo--){
						
						if(valid(i+abajo, j+k-abs(abajo))){
							//cout << "valid = " << i+abajo << ", " << j+k-abs(abajo)<<endl;
							toXor.pb(coordenadasAPosicion(i+abajo, j+k-abs(abajo)));
							//add_and({coordenadasAPosicion(i, j), coordenadasAPosicion(i+abajo, j+k-abs(abajo))});
							//cuenta ++;
						}
					}
					
					if(toXor.empty())continue;
					toXor.pb(coordenadasAPosicion(i, j));
					add_xor(toXor);
					add_not({H*W+cuenta});
					//cout << "analising " << H*W+cuenta << endl;
					cuenta+=2;
					add_and({H*W+cuenta-1, coordenadasAPosicion(i, j)});
					//cout << "and to position" << H*W+cuenta-1 << endl;
					cuenta++;
					toOr.pb({H*W+cuenta-1});

					

				}
			}
		}
		add_or(toOr);
		return ;
	}






	//firstXOR
	vector<int>resultadosXORES[2];
	for(int j = 0 ; j < W; j ++){
		vector<int>toXOR;
		for(int i = 0 ; i < H ; i ++){
			toXOR.pb(coordenadasAPosicion(i, j));
		}
		add_xor(toXOR);
		resultadosXORES[0].pb(H*W+cuenta);
		cuenta ++;
	}


	for(int i = 0 ; i < H ; i ++){
		vector<int>toXOR;
		for(int j = 0 ; j < W ; j ++){
			toXOR.pb(coordenadasAPosicion(i, j));
		}
		add_xor(toXOR);
		resultadosXORES[1].pb(H*W+cuenta);
		cuenta++;
	}
	vector<int>resultadosANDS[2];
	for(int i = 0 ; i+1 < resultadosXORES[0].size() ; i++){
		add_and({resultadosXORES[0][i], resultadosXORES[0][i+1]});
		resultadosANDS[0].pb(H*W+cuenta);
		cuenta ++;
	}
	for(int i = 0 ; i+1 < resultadosXORES[1].size() ; i++){
		add_and({resultadosXORES[1][i], resultadosXORES[1][i+1]});
		resultadosANDS[1].pb(H*W+cuenta);
		cuenta ++;
	}
	vector<int>resultadosORS;
	vector<int>toAdd;
	for(int i = 0 ; i < resultadosANDS[0].size() ; i++){
		toAdd.pb(resultadosANDS[0][i]);
	}
	add_or(toAdd);
	resultadosORS.pb(H*W+cuenta);
	cuenta ++;
	toAdd.clear();

	for(int i = 0 ; i < resultadosANDS[1].size() ; i++){
		toAdd.pb(resultadosANDS[1][i]);
	}
	add_or(toAdd);
	resultadosORS.pb(H*W+cuenta);
	cuenta ++;
	vector<int>finalXOR[2];
	for(int i = 0 ; i < resultadosXORES[0].size() ; i++){
		finalXOR[0].pb(resultadosXORES[0][i]);
	}
	for(int i = 0 ; i < resultadosXORES[1].size() ; i++){
		finalXOR[1].pb(resultadosXORES[1][i]);
	}

	int ResultadoFinalXOR[2];
	add_xor(finalXOR[0]);
	ResultadoFinalXOR[0] = H*W+cuenta;
	cuenta ++;
	add_xor(finalXOR[1]);
	ResultadoFinalXOR[1] = H*W+cuenta;
	cuenta ++;

	add_and({resultadosORS[0], ResultadoFinalXOR[1]});
	int respuesta[2];
	respuesta[0] = H*W+cuenta;
	cuenta ++;
	add_and({resultadosORS[1], ResultadoFinalXOR[0]});
	respuesta[1] = H*W+cuenta;
	cuenta ++;
	add_or({respuesta[0], respuesta[1]});

}

Compilation message

vision.cpp: In function 'void construct_network(int, int, int)':
vision.cpp:86:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   86 |  for(int i = 0 ; i+1 < resultadosXORES[0].size() ; i++){
      |                  ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
vision.cpp:91:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   91 |  for(int i = 0 ; i+1 < resultadosXORES[1].size() ; i++){
      |                  ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
vision.cpp:98:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   98 |  for(int i = 0 ; i < resultadosANDS[0].size() ; i++){
      |                  ~~^~~~~~~~~~~~~~~~~~~~~~~~~~
vision.cpp:106:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  106 |  for(int i = 0 ; i < resultadosANDS[1].size() ; i++){
      |                  ~~^~~~~~~~~~~~~~~~~~~~~~~~~~
vision.cpp:113:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  113 |  for(int i = 0 ; i < resultadosXORES[0].size() ; i++){
      |                  ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
vision.cpp:116:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  116 |  for(int i = 0 ; i < resultadosXORES[1].size() ; i++){
      |                  ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB WA in grader: Instruction with no inputs
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB WA in grader: Instruction with no inputs
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB WA in grader: Instruction with no inputs
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB WA in grader: Instruction with no inputs
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB WA in grader: Instruction with no inputs
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 11 ms 1140 KB on inputs (80, 199), (81, 199), expected 1, but computed 0
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB WA in grader: Instruction with no inputs
2 Halted 0 ms 0 KB -