Submission #588055

#TimeUsernameProblemLanguageResultExecution timeMemory
588055ogibogi2004Vision Program (IOI19_vision)C++14
100 / 100
149 ms8656 KiB
#include "vision.h"
#include<bits/stdc++.h>
using namespace std;

void construct_network(int H, int W, int K) {
    vector<int>table;
    for(int i=0;i<H*W;i++)table.push_back(i);
    vector<int>diag1,diag2,diag11,diag21;
    for(int s=0;s<H+W-1;s++)
    {
        vector<int>v;
        for(int i=0;i<H;i++)
        {
            for(int j=0;j<W;j++)
            {
                if(i+j==s)v.push_back(i*W+j);
            }
        }
        if(v.size()!=0)
        {
            diag1.push_back(add_or(v));
            diag11.push_back(add_and({diag1.back(),add_not(add_xor(v))}));
        }
    }
    for(int s=-(W-1);s<H;s++)
    {
        vector<int>v;
        for(int i=0;i<H;i++)
        {
            for(int j=0;j<W;j++)
            {
                if(i-j==s)v.push_back(i*W+j);
            }
        }
        if(v.size()!=0)
        {
            diag2.push_back(add_or(v));
            diag21.push_back(add_and({diag2.back(),add_not(add_xor(v))}));
        }
    }
    int f1,f2;
    vector<int>v1,v2;
    for(int i=0;i+K<diag1.size();i++)
    {
        vector<int>v;
        for(int j=i;j<=i+K;j++)v.push_back(diag1[j]);
        for(int j=i;j<=i+K;j++)v.push_back(diag11[j]);
        v1.push_back(add_and({add_not(add_xor(v)),add_or(v)}));
    }
    for(int i=0;i+K<diag2.size();i++)
    {
        vector<int>v;
        for(int j=i;j<=i+K;j++)v.push_back(diag2[j]);
        for(int j=i;j<=i+K;j++)v.push_back(diag21[j]);
        v2.push_back(add_and({add_not(add_xor(v)),add_or(v)}));
    }
    f1=add_and({add_or(v1),add_or(v2)});
    v1.clear();v2.clear();
    for(int i=0;i+K-1<diag1.size();i++)
    {
        vector<int>v;
        for(int j=i;j<=i+K-1;j++)v.push_back(diag1[j]);
        for(int j=i;j<=i+K-1;j++)v.push_back(diag11[j]);
        v1.push_back(add_and({add_not(add_xor(v)),add_or(v)}));
    }
    for(int i=0;i+K-1<diag2.size();i++)
    {
        vector<int>v;
        for(int j=i;j<=i+K-1;j++)v.push_back(diag2[j]);
        for(int j=i;j<=i+K-1;j++)v.push_back(diag21[j]);
        v2.push_back(add_and({add_not(add_xor(v)),add_or(v)}));
    }
    f2=add_and({add_or(v1),add_or(v2)});
    add_and({f1,add_not(f2)});
}

Compilation message (stderr)

vision.cpp: In function 'void construct_network(int, int, int)':
vision.cpp:43:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   43 |     for(int i=0;i+K<diag1.size();i++)
      |                 ~~~^~~~~~~~~~~~~
vision.cpp:50:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |     for(int i=0;i+K<diag2.size();i++)
      |                 ~~~^~~~~~~~~~~~~
vision.cpp:59:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |     for(int i=0;i+K-1<diag1.size();i++)
      |                 ~~~~~^~~~~~~~~~~~~
vision.cpp:66:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   66 |     for(int i=0;i+K-1<diag2.size();i++)
      |                 ~~~~~^~~~~~~~~~~~~
#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...