제출 #884486

#제출 시각아이디문제언어결과실행 시간메모리
884486JakobZorzVision Program (IOI19_vision)C++14
26 / 100
10 ms1752 KiB
#include"vision.h"
#include<iostream>
#include<vector>
using namespace std;

int w,h;

int get_cell(int x,int y){
    return y*w+x;
}

int construct_diagonal1(int x,int y){
    vector<int>ins;
    while(x<w&&y<h){
        ins.push_back(get_cell(x,y));
        x++;
        y++;
    }
    return add_or(ins);
}

int construct_diagonal2(int x,int y){
    vector<int>ins;
    while(x>=0&&y<h){
        ins.push_back(get_cell(x,y));
        x--;
        y++;
    }
    return add_or(ins);
}

vector<int>func1(vector<int>arr1,int k){
    vector<int>arr2;
    
    for(int i=0;i+k<=(int)arr1.size();i++){
        vector<int>vec;
        for(int j=i;j<i+k;j++){
            vec.push_back(arr1[j]);
        }
        
        int gor=add_or(vec);
        int gxor=add_xor(vec);
        int gnxor=add_not(gxor);
        arr2.push_back(add_and({gor,gnxor}));
    }
    
    return arr2;
}

void construct_network(int H,int W,int k){
    w=W;
    h=H;
    vector<int>diagonals1;
    for(int y=h-1;y>0;y--)
        diagonals1.push_back(construct_diagonal1(0,y));
    for(int x=0;x<w;x++)
        diagonals1.push_back(construct_diagonal1(x,0));
    
    vector<int>diagonals2;
    for(int x=0;x<w;x++)
        diagonals2.push_back(construct_diagonal2(x,0));
    for(int y=1;y<h;y++)
        diagonals2.push_back(construct_diagonal2(w-1,y));
    
    vector<int>intervals1,intervals2;
    vector<int>res;
    
    int or1=add_or(func1(diagonals1,k));
    int or2=add_or(func1(diagonals2,k));
    int or3=add_or(func1(diagonals1,k+1));
    int or4=add_or(func1(diagonals2,k+1));
    int and1=add_and({or1,or2});
    int and2=add_and({or3,or4});
    int not1=add_not(and1);
    add_and({and2,not1});
    
    /*res=func1(diagonals1,k);
    intervals1.insert(intervals1.end(),res.begin(),res.end());
    res=func1(diagonals2,k);
    intervals1.insert(intervals1.end(),res.begin(),res.end());
    
    res=func1(diagonals1,k-1);
    intervals2.insert(intervals2.end(),res.begin(),res.end());
    res=func1(diagonals2,k-1);
    intervals2.insert(intervals2.end(),res.begin(),res.end());
    
    int ork=add_or(intervals1);
    int ork1=add_or(intervals2);
    int nork1=add_not(ork1);
    add_and({ork,nork1});*/
}
#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...