Submission #1233820

#TimeUsernameProblemLanguageResultExecution timeMemory
1233820jundiVision Program (IOI19_vision)C++20
33 / 100
4 ms4424 KiB
#include <vector>
#include "vision.h"
using namespace std;
void construct_network(int h,int w,int k){
    int n=h*w;
    if(k==1){
        int t=h*(w-1)+w*(h-1);
        if(t>10000){
            int n0=add_not(0);
            add_and({0,n0});
            return;
        }
        vector<int> e;
        for(int i=0;i<h;i++){
            for(int j=0;j<w-1;j++){
                int idx=i*w+j;
                e.push_back(add_and({idx,idx+1}));
            }
        }
        for(int i=0;i<h-1;i++){
            for(int j=0;j<w;j++){
                int idx=i*w+j;
                e.push_back(add_and({idx,idx+w}));
            }
        }
        if(e.empty()){
            int n0=add_not(0);
            add_and({0,n0});
        }else{
            add_or(e);
        }
    }else{
        vector<int> ns(n);
        for(int i=0;i<n;i++) ns[i]=add_not(i);
        vector<int> os;
        for(int i=0;i<n;i++){
            for(int j=i+1;j<n;j++){
                int r1=i/w,c1=i%w;
                int r2=j/w,c2=j%w;
                int d=abs(r1-r2)+abs(c1-c2);
                if(d==k){
                    vector<int> in={i,j};
                    for(int x=0;x<n;x++){
                        if(x==i||x==j) continue;
                        in.push_back(ns[x]);
                    }
                    os.push_back(add_and(in));
                }
            }
        }
        if(os.empty()){
            int n0=add_not(0);
            add_and({0,n0});
        }else{
            add_or(os);
        }
    }
}
#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...