제출 #815448

#제출 시각아이디문제언어결과실행 시간메모리
815448PagodePaivaVision Program (IOI19_vision)C++14
44 / 100
46 ms8760 KiB
    #include "vision.h"
    #include<bits/stdc++.h>
    #define fr first
    #define sc second
    #define pii pair <int, int>

    using namespace std;
     
    int dist(pair <int,int>a,pair<int,int>b){
    	return abs(a.fr-b.fr)+abs(a.sc-b.sc);
    }
    
    set <pair <pii, pii>> s;

    void construct_network(int H, int W, int K) {
    	// std::vector<int> Ns;
    	// Ns = {0, 1};
    	// int a = add_and(Ns);
    	// Ns = {0, a};
    	// int b = add_or(Ns);
    	// Ns = {0, 1, b};
    	// int c = add_xor(Ns);
    	// add_not(c);
     
    	int n = H, m = W, k = K;
    	int r = n*m;
     	vector <int> auxx;
     	vector <int> aux;

    	for(int i = 0;i < n;i++){
    		for(int j = 0;j < m;j++){
    			for(int i1 = 0;i1 < n;i1++){
    				for(int j1 = j;j1 < m;j1++){
    					if(dist({i, j}, {i1, j1}) == k){
    						if(s.find({{i, j}, {i1, j1}}) != s.end() or s.find({{i1, j1}, {i, j}}) != s.end()) continue;
    						s.insert({{i, j}, {i1, j1}});						// r = add_and({i*m+j, i1*m+j1});
    						auxx.push_back(i1*m+j1);	
    					}
    				}
    			}

    			if(auxx.size() == 0) continue;

    			int a1 = add_xor(auxx);
    			auxx.push_back({i*m+j});
    			int a2 = add_xor(auxx);
    			a2 = add_not(a2);
    			r = add_and({a1, a2});
    			aux.push_back(r);
    			auxx.clear();
    		}
    	}

    	// for(auto x : aux) cout << x << " ";

    	add_or(aux);
     
    	return;
    }
#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...