Submission #249846

#TimeUsernameProblemLanguageResultExecution timeMemory
249846LittleFlowers__Vision Program (IOI19_vision)C++17
44 / 100
18 ms3192 KiB
#include <bits/stdc++.h>
using namespace std;
#define in ({int x=0;int c=getchar(),n=0;for(;!isdigit(c);c=getchar()) n=(c=='-');for(;isdigit(c);c=getchar()) x=x*10+c-'0';n?-x:x;})
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int rnd(int l,int r){return l+rng()%(r-l+1);}
#define fasty ios_base::sync_with_stdio(0),cin.tie(0);
#define forinc(a,b,c) for(int a=b,_c=c;a<=_c;++a)
#define fordec(a,b,c) for(int a=b,_c=c;a>=_c;--a)
#define forv(a,b) for(auto&a:b)
#define fi first
#define se second
#define pb push_back
#define ii pair<int,int>
#define mt make_tuple
#define all(a) a.begin(),a.end()
#define reset(f, x) memset(f, x, sizeof(f))
#define gg exit(0);

#ifndef UNX
#include "vision.h"
#endif

int D[]={-1,-1,1,1};
int C[]={-1,1,1,-1};

const int N=210;

int it;
int id[N][N];

#ifdef UNX
int is[N*N];
int add_and(vector<int> a){
    int ret=1;
    forv(i,a){
        ret&=is[i];
        //cout<<i<<" ";
    }
    //cout<<"\n";
    return ret;
}
int add_or(vector<int> a){
    int ret=0;
    forv(i,a){
        ret|=is[i];
        //cout<<i<<" ";
    }
    //cout<<"\n";
    return ret;
}
int add_not(int x){
    return !is[x];
}
#endif

void construct_network(int m, int n, int w){
    forinc(i,1,m) forinc(j,1,n) id[i][j]=it++;
    vector<ii> val;
    vector<int> fin, ask;
    int tot=0;
    forinc(i,1,m){
        forinc(j,1,n){
            if(w==1 && (i+j)%2==0) continue;
            forinc(t,0,w){
                int k=w-t;
                forinc(l,0,3){
                    int x=i+t*D[l], y=j+k*C[l];
                    if(1<=x&&x<=m&&1<=y&&y<=n){
                        ask.push_back(id[x][y]);
                    }
                }
            }
            if(ask.size()){
                fin.push_back(add_and({add_or(ask),id[i][j]}));
                ask.clear();
            }
        }
    }
    //cerr<<tot<<"\n";
    add_or(fin);
}

#ifdef UNX
int m,n,w;
int dd[N][N];
main(){
    #define task "TASK"
    if(fopen(task".inp","r")){
        freopen(task".inp","r",stdin);
        //freopen(task".out","w",stdout);
    }
    m=100,n=100,w=80;
    construct_network(m,n,w);
}
#endif // UNX

Compilation message (stderr)

vision.cpp: In function 'void construct_network(int, int, int)':
vision.cpp:60:9: warning: unused variable 'tot' [-Wunused-variable]
     int tot=0;
         ^~~
#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...