Submission #976925

#TimeUsernameProblemLanguageResultExecution timeMemory
976925LucaIlieVision Program (IOI19_vision)C++17
44 / 100
14 ms3024 KiB
#include "vision.h"
#include <bits/stdc++.h>

using namespace std;

int n, m, k;

int cellId( int l, int c ) {
    if ( l < 0 || c < 0 || l >= n || c >= m )
        return -1;
    return l * m + c;
}

void construct_network( int N, int M, int K ) {
    n = N, m = M, k = K;

    int id = n * m;
    vector<int> ids;
    for ( int l = 0; l < n; l++ ) {
        for ( int c = 0; c < m; c++ ) {
            vector<int> cells;
            for ( int dl = 0; dl <= k; dl++ ) {
                int dc = k - dl;
                if ( cellId( l - dl, c - dc ) != -1 )
                    cells.push_back( cellId( l - dl, c - dc ) );
                if ( cellId( l + dl, c - dc ) != -1 )
                    cells.push_back( cellId( l + dl, c - dc ) );
                if ( cellId( l - dl, c + dc ) != -1 )
                    cells.push_back( cellId( l - dl, c + dc ) );
                if ( cellId( l + dl, c + dc ) != -1 )
                    cells.push_back( cellId( l + dl, c + dc ) );
            }
            sort( cells.begin(), cells.end() );
            cells.resize( unique( cells.begin(), cells.end() ) - cells.begin() );
            if ( cells.empty() )
                continue;
            add_or( cells );
            id++;
            add_and( { id - 1, cellId( l, c ) } );
            ids.push_back( id );
            id++;
        }
    }
    add_or( ids );
}
#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...