Submission #979063

#TimeUsernameProblemLanguageResultExecution timeMemory
979063simuyuVision Program (IOI19_vision)C++14
44 / 100
4 ms2264 KiB
#include "vision.h" #include <bits/stdc++.h> using namespace std; void construct_network(int H, int W, int K) { //vector<int> Ns; //Ns = {0, 1}; //int a = add_and(Ns); if (max(H,W) <= 100) { // st1,2,3 vector<int> st2ONs, st2INs; for (int mh=0; mh<H; mh++) { for (int mw=0; mw<W; mw++) { // middle is mh, mw // note that this is only true if (mh*W + mw) is true yea. // try four sides surround with K. st2INs.clear(); // jic for (int i=0; i<=K; i++) { // try adding from all 4 directions if ( ( ((0 <= mh-i) && (mh-i < H)) && ((0 <= mw-(K-i)) && (mw-(K-i) < W)) ) && ( ((mh-i)*W + (mw-(K-i))) > (mh*W + mw) ) ) st2INs.push_back( (mh-i)*W + (mw-(K-i)) ); if ((K-i) != 0) if ( ( ((0 <= mh-i) && (mh-i < H)) && ((0 <= mw+(K-i)) && (mw+(K-i) < W)) ) && ( ((mh-i)*W + (mw+(K-i))) > (mh*W + mw) ) ) st2INs.push_back( (mh-i)*W + (mw+(K-i)) ); if (i!=0) { if ( ( ((0 <= mh+i) && (mh+i < H)) && ((0 <= mw-(K-i)) && (mw-(K-i) < W)) ) && ( ((mh+i)*W + (mw-(K-i))) > (mh*W + mw) ) ) st2INs.push_back( (mh+i)*W + (mw-(K-i)) ); if ((K-i) != 0) if ( ( ((0 <= mh+i) && (mh+i < H)) && ((0 <= mw+(K-i)) && (mw+(K-i) < W)) ) && ( ((mh+i)*W + (mw+(K-i))) > (mh*W + mw) ) ) st2INs.push_back( (mh+i)*W + (mw+(K-i)) ); } } if (st2INs.size() == 0) continue; int mor = add_or(st2INs); // either of them are yes int can = add_and( {mor, (mh*W + mw)} ); // and the initial condition was true also st2ONs.push_back(can); /*cout << '(' << mh << ',' << mw << "): "; for (int i=0; i<st2INs.size(); i++) { cout << '(' << st2INs[i]/W << ',' << st2INs[i]%W << ") "; } cout << endl;*/ } } int st2 = add_or(st2ONs); // if any of those cases were fulfilled return; } else if (min(H,W) == 1) { // st5 vector<int> st5Ns; if (H==1) { for (int w=0; w<W-K; w++) { // start at (0, w), end at (0, w+K) int can = add_and({w, w+K}); st5Ns.push_back(can); } } else { // W==1 for (int h=0; h<H-K; h++) { // start at (h, 0), end at (h+W, 0) int can = add_and({h*W, (h+K)*W}); st5Ns.push_back(can); } } int st5 = add_or(st5Ns); return; } else if (K == 1) { // st7 } else { // st6 vector<int> st6Ns; for (int i=0; i<=K; i++) { // i is row, K-i is column. if ((i>=H) || (K-i >= W)) continue; // if invalid index //cout << "(" << i << "," << K-i << ")" << endl; st6Ns.push_back( i*W + (K-i) ); } int st6 = add_or(st6Ns); st6Ns.clear(); } }

Compilation message (stderr)

vision.cpp: In function 'void construct_network(int, int, int)':
vision.cpp:55:13: warning: unused variable 'st2' [-Wunused-variable]
   55 |         int st2 = add_or(st2ONs); // if any of those cases were fulfilled
      |             ^~~
vision.cpp:73:10: warning: unused variable 'st5' [-Wunused-variable]
   73 |      int st5 = add_or(st5Ns);
      |          ^~~
vision.cpp:90:13: warning: unused variable 'st6' [-Wunused-variable]
   90 |         int st6 = add_or(st6Ns);
      |             ^~~
#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...