Submission #1164968

#TimeUsernameProblemLanguageResultExecution timeMemory
1164968AlgorithmWarriorVision Program (IOI19_vision)C++20
14 / 100
17 ms2632 KiB
#include <bits/stdc++.h>
#include "vision.h"

using namespace std;

int ind(int lin,int col,int W){
    return lin*W+col;
}

bool inmat(int lin,int col,int H,int W){
    return 0<=lin && lin<H && 0<=col && col<W;
}

int dist(int l1,int c1,int l2,int c2){
    return abs(l1-l2)+abs(c1-c2);
}

vector<int>coord(int l1,int l2,int c1,int c2,int W){
    vector<int>coor;
    int i,j;
    for(i=l1;i<=l2;++i)
        for(j=c1;j<=c2;++j)
            coor.push_back(ind(i,j,W));
    return coor;
}

void construct_network(int H, int W, int K) {
    int i,j;
    /// exista
    vector<int>exist;
    /// exista orizontal
    vector<int>exoriz;
    /// o singura linie
    vector<int>asklinii;
    for(i=0;i<H;++i)
        asklinii.push_back(add_or(coord(i,i,0,W-1,W)));
    exoriz.push_back(add_xor(asklinii));
    /// coloane alaturate
    vector<int>colal;
    /// col par-impar
    vector<int>askcpimp;
    for(j=0;j<W-1;j+=2)
        askcpimp.push_back(add_or(coord(0,H-1,j,j+1,W)));
    if(j==W-1)
        askcpimp.push_back(add_or(coord(0,H-1,j,j,W)));
    colal.push_back(add_xor(askcpimp));
    /// col impar-par
    vector<int>askcimpp;
    askcimpp.push_back(add_or(coord(0,H-1,0,0,W)));
    for(j=1;j<W-1;j+=2)
        askcimpp.push_back(add_or(coord(0,H-1,j,j+1,W)));
    if(j==W-1)
        askcimpp.push_back(add_or(coord(0,H-1,j,j,W)));
    colal.push_back(add_xor(askcimpp));
    exoriz.push_back(add_or(colal));
    exist.push_back(add_and(exoriz));
    /// exista vertical
    vector<int>exvert;
    /// o singura coloana
    vector<int>askcoloane;
    for(j=0;j<W;++j)
        askcoloane.push_back(add_or(coord(0,H-1,j,j,W)));
    exvert.push_back(add_xor(askcoloane));
    /// linii alaturate
    vector<int>linal;
    /// lin par-impar
    vector<int>asklpimp;
    for(i=0;i<H-1;i+=2)
        asklpimp.push_back(add_or(coord(i,i+1,0,W-1,W)));
    if(i==H-1)
        asklpimp.push_back(add_or(coord(i,i,0,W-1,W)));
    linal.push_back(add_xor(asklpimp));
    /// lin impar-par
    vector<int>asklimpp;
    asklimpp.push_back(add_or(coord(0,0,0,W-1,W)));
    for(i=1;i<H-1;i+=2)
        asklimpp.push_back(add_or(coord(i,i+1,0,W-1,W)));
    if(i==H-1)
        asklimpp.push_back(add_or(coord(i,i,0,W-1,W)));
    linal.push_back(add_xor(asklimpp));
    exvert.push_back(add_or(linal));
    exist.push_back(add_and(exvert));
    add_or(exist);
}
#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...