This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "vision.h"
#include <bits/stdc++.h>
using namespace std ;
int cnt ;
vector <int> Ns, Ns2 ;
int pos1 = 0, pos2 = 0, var ;
int go () {
if ( min ( Ns.size(), Ns2.size() ) == 0 ) return 0 ;
add_or ( Ns ) ;
add_or ( Ns2 ) ;
add_and ( vector <int>{cnt, cnt+1} ) ;
cnt+=3 ;
}
void ini() {
Ns = vector<int>(), Ns2 = vector<int>() ;
}
int filCol ( int H, int W, int K ) {
for ( int i = 0 ; i < H ;++i ) {
ini() ;
for ( int j = 0 ; j < W ;++j ) Ns2.push_back ( i*W+j );
for ( int j = 0 ; j < H ;++j ) {
if ( abs(i-j) > K )
for ( int k = 0 ; k < W; ++k ) Ns.push_back ( j*W+k ) ;
}
go() ;
}
}
int goDiagonal ( int fil, int col, int flag, int H, int W ) {
while ( fil >= 0 && col < W ) {
if ( fil >= H || col < 0 ) {}
else{if ( flag ) Ns.push_back ( fil*W+col ) ;
else Ns2.push_back ( fil*W+col ) ;}
fil-- ;
col++ ;
}
}
int otDiag ( int fil, int col, int flag, int H, int W ) {
while ( fil >= 0 && col >= 0 ) {
if ( fil >= H || col >= W ) {}
else{if ( flag ) Ns.push_back ( fil*W+col ) ;
else Ns2.push_back ( fil*W+col ) ;}
fil-- ;
col-- ;
}
}
int diagDer ( int H, int W, int K ) {
for ( int i = 0 ; i < H; ++i ) {
ini() ;
goDiagonal ( i+K, 0, 1, H, W ) ;
goDiagonal ( i-K, 0, 1, H, W ) ;
goDiagonal ( i, 0,0, H, W ) ;
go() ;
}
for ( int i = 0 ; i < W ; ++i ) {
ini() ;
goDiagonal ( H-1, i-K, 1, H, W ) ;
goDiagonal ( H-1, i+K, 1, H, W ) ;
goDiagonal ( H-1, i, 0, H, W ) ;
go() ;
}
}
int diagIzq ( int H, int W, int K ) {
for ( int i = 0 ; i < H; ++i ) {
ini() ;
otDiag ( i+K, W-1, 1, H, W ) ;
otDiag ( i-K, W-1, 1, H, W ) ;
otDiag ( i, W-1,0, H, W ) ;
go() ;
}
for ( int i = 0 ; i < W ; ++i ) {
ini() ;
otDiag ( H-1, i-K, 1, H, W ) ;
otDiag ( H-1, i+K, 1, H, W ) ;
otDiag ( H-1, i, 0, H, W ) ;
go() ;
}
}
void solve ( int H, int W, int K, int flag ) {
filCol ( H, W,K ) ;
filCol ( W, H,K ) ;
diagDer ( H, W, K ) ;
diagIzq ( H, W, K ) ;
vector <int> frOr ;
int cur = 0 ;
for ( int i = var ; i < cnt ; ++i ) {
if ( cur==2 ) frOr.push_back ( i );
cur++ ;
cur%=3 ;
}
add_or ( frOr ) ;
if ( flag ) pos1 = cnt ;
else pos2 = cnt ;
cnt++ ;
var = cnt ;
}
void construct_network(int H, int W, int K) {
var = cnt = H*W ;
solve ( H, W, K, 1 ) ;
solve ( H, W, K-1, 0 ) ;
add_xor ( vector <int>{pos1,pos2} ) ;
}
Compilation message (stderr)
vision.cpp: In function 'int filCol(int, int, int)':
vision.cpp:31:1: warning: no return statement in function returning non-void [-Wreturn-type]
}
^
vision.cpp: In function 'int goDiagonal(int, int, int, int, int)':
vision.cpp:41:1: warning: no return statement in function returning non-void [-Wreturn-type]
}
^
vision.cpp: In function 'int otDiag(int, int, int, int, int)':
vision.cpp:51:1: warning: no return statement in function returning non-void [-Wreturn-type]
}
^
vision.cpp: In function 'int diagDer(int, int, int)':
vision.cpp:68:1: warning: no return statement in function returning non-void [-Wreturn-type]
}
^
vision.cpp: In function 'int diagIzq(int, int, int)':
vision.cpp:85:1: warning: no return statement in function returning non-void [-Wreturn-type]
}
^
vision.cpp: In function 'int go()':
vision.cpp:15:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |