Submission #153075

# Submission time Handle Problem Language Result Execution time Memory
153075 2019-09-12T08:51:18 Z oolimry Vision Program (IOI19_vision) C++14
26 / 100
44 ms 4340 KB
#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);

   }
   int impt = add_or(Ns);
   for(int r = 0;r < H;r++){
        vector<int> Ds;
        for(int c = 0;c < W;c++){
            Ds.push_back(r * W + c);
        }
        add_or(Ds);
    }
    for(int c = 0;c < W;c++){
        vector<int> Ds;
        for(int r = 0;r < H;r++){
            Ds.push_back(r * W + c);
        }
        add_or(Ds);
    }
    vector<int> hh;
    vector<int> vv;
    for(int r = 0;r < H - K;r++){
        vector<int> Ds;
        for(int i = 0;i <= K;i++){
            Ds.push_back(impt + 1 + i + r);
        }
        int x = add_xor(Ds);
        int y = add_or(Ds);
        int z = add_not(x);
        int zz = add_and({z,y});
        hh.push_back(zz);
    }

    for(int r = 0;r < W - K;r++){
        vector<int> Ds;
        for(int i = 0;i <= K;i++){
            Ds.push_back(impt + 1 + i + r + H);
        }
        int x = add_xor(Ds);
        int y = add_or(Ds);
        int z = add_not(x);
        int zz = add_and({z,y});
        vv.push_back(zz);
    }
    vector<int> st;
    st.push_back(impt);


    vector<int> k1;
    vector<int> k2;
    for(int r = 0;r < H;r++){
        vector<int> Ds;
        for(int c = 0;c < W;c++){
            Ds.push_back(r * W + c);
        }
        k1.push_back(add_xor(Ds));
    }
    for(int c = 0;c < W;c++){
        vector<int> Ds;
        for(int r = 0;r < H;r++){
            Ds.push_back(r * W + c);
        }
        k1.push_back(add_xor(Ds));
    }

    for(int r = 0;r < H;r++){
        vector<int> Ds;
        for(int c = 0;c < W;c++){
            Ds.push_back(r * W + c);
        }
        k2.push_back(add_or(Ds));
    }
    for(int c = 0;c < W;c++){
        vector<int> Ds;
        for(int r = 0;r < H;r++){
            Ds.push_back(r * W + c);
        }
        k2.push_back(add_or(Ds));
    }

    vector<int> k3;
    for(int i = 0;i < k1.size();i++){
        k3.push_back(add_not(k1[i]));
    }

    vector<int> k4;
    for(int i = 0;i < k3.size();i++){
        k4.push_back(add_and({k2[i],k3[i]}));
    }

    int k5 = add_or(k4);

    vv.push_back(k5);
    hh.push_back(k5);
    if(!vv.empty()) {int b1 = add_or(vv); st.push_back(b1);}
    if(!hh.empty()) {int b2 = add_or(hh); st.push_back(b2);}

    add_and(st);


}

Compilation message

vision.cpp: In function 'void construct_network(int, int, int)':
vision.cpp:130:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0;i < k1.size();i++){
                   ~~^~~~~~~~~~~
vision.cpp:135:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0;i < k3.size();i++){
                   ~~^~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 256 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Incorrect 2 ms 376 KB on inputs (0, 1), (1, 0), expected 1, but computed 0
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 256 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Incorrect 2 ms 376 KB on inputs (0, 1), (1, 0), expected 1, but computed 0
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 256 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Incorrect 2 ms 376 KB on inputs (0, 1), (1, 0), expected 1, but computed 0
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 256 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Incorrect 2 ms 376 KB on inputs (0, 1), (1, 0), expected 1, but computed 0
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 4 ms 632 KB Output is correct
2 Correct 5 ms 632 KB Output is correct
3 Correct 5 ms 636 KB Output is correct
4 Correct 3 ms 504 KB Output is correct
5 Correct 4 ms 632 KB Output is correct
6 Correct 5 ms 760 KB Output is correct
7 Correct 5 ms 632 KB Output is correct
8 Correct 3 ms 504 KB Output is correct
9 Correct 4 ms 632 KB Output is correct
10 Correct 5 ms 760 KB Output is correct
11 Correct 5 ms 632 KB Output is correct
12 Correct 6 ms 632 KB Output is correct
13 Correct 5 ms 632 KB Output is correct
14 Correct 3 ms 504 KB Output is correct
15 Correct 4 ms 632 KB Output is correct
16 Correct 5 ms 760 KB Output is correct
17 Correct 6 ms 632 KB Output is correct
18 Correct 6 ms 632 KB Output is correct
19 Correct 5 ms 636 KB Output is correct
20 Correct 3 ms 504 KB Output is correct
21 Correct 2 ms 376 KB Output is correct
22 Correct 2 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB Output is correct
2 Incorrect 2 ms 376 KB on inputs (0, 0), (1, 1), expected 1, but computed 0
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 44 ms 4256 KB Output is correct
2 Correct 2 ms 380 KB Output is correct
3 Correct 6 ms 632 KB Output is correct
4 Correct 9 ms 1016 KB Output is correct
5 Correct 4 ms 632 KB Output is correct
6 Correct 4 ms 632 KB Output is correct
7 Correct 23 ms 2424 KB Output is correct
8 Correct 24 ms 2424 KB Output is correct
9 Correct 43 ms 4340 KB Output is correct
10 Correct 2 ms 376 KB Output is correct
11 Correct 2 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 256 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Incorrect 2 ms 376 KB on inputs (0, 1), (1, 0), expected 1, but computed 0
7 Halted 0 ms 0 KB -