Submission #153063

#TimeUsernameProblemLanguageResultExecution timeMemory
153063oolimryVision Program (IOI19_vision)C++14
12 / 100
17 ms1784 KiB
#include "vision.h"
#include <bits/stdc++.h>
using namespace std;
void construct_network(int H, int W, int K) {

    map<int, vector<int> > a; ///down left (/)
    map<int, vector<int> > b; ///down right (\)

    for(int r = 0;r < H;r++){
        for(int c = 0;c < W;c++){
            a[r+c].push_back(r * W + c);
            b[r-c].push_back(r * W + c);
        }
    }

    int s = a.size();
    int cnt = H*W;
    for(map<int, vector<int> >::iterator it  = a.begin();it != a.end();it++){
        //cout << it->first << ": ";
        //for(int x : it->second){
       //     cout << x << " ";
        //}
        //cout << "\n";
        add_or(it->second);
        cnt++;
    }

    for(map<int, vector<int> >::iterator it  = b.begin();it != b.end();it++){
        //cout << it->first << ": ";
        //for(int x : it->second){
       //     cout << x << " ";
        //}
        //cout << "\n";
        add_or(it->second);
        cnt++;
    }
    for(int i = 0;i < s - K;i++){
        vector<int> Ns = {H*W+i,H*W+i+K};
        add_and(Ns);
        cnt++;
    }
    for(int i = 0;i < s - K;i++){
        vector<int> Ns = {H*W+i+s,H*W+i+K+s};
        add_and(Ns);
        cnt++;
    }

   vector<int> Ns;
   for(int i = H*W+2*s;i < cnt;i++){
    Ns.push_back(i);
   }
   add_or(Ns);
}
#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...