Submission #955316

#TimeUsernameProblemLanguageResultExecution timeMemory
9553168pete8Vision Program (IOI19_vision)C++17
0 / 100
9 ms1596 KiB
#include "vision.h" #include<iostream> #include<stack> #include<map> #include<vector> #include<string> #include<unordered_map> #include <queue> #include<cstring> #include<limits.h> #include <cassert> #include<cmath> #include<set> #include<algorithm> #include <iomanip> #include<numeric> //gcd(a,b) #include<bitset> using namespace std; #define ll long long #define f first #define endl "\n" #define s second #define pii pair<int,int> #define ppii pair<int,pii> #define vi vector<int> #define pb push_back #define all(x) x.begin(),x.end() #define rall(x) x.rbegin(),x.rend() #define F(n) for(int i=0;i<n;i++) #define lb lower_bound #define ub upper_bound #define fastio ios::sync_with_stdio(false);cin.tie(NULL); #pragma GCC optimize ("03,unroll-loops") using namespace std; int cnt=0; /* int add_or(vector<int>v){ cnt++; return 0; } int add_and(vector<int>v){ cnt++; return 0; } int add_xor(vector<int>v){ cnt++; return 0; }*/ void construct_network(int h, int w, int k){ vector<int>ans; auto valid=[&](int a,int b){ if(a<0||b<0||a>=h||b>=w)return false; return true; }; auto get=[&](int a,int b){return a*w+b;}; auto dist=[&](int a,int b,int x,int y){return abs(a-x)+abs(b-y);}; vector<vector<bool>>done(h+1,vector<bool>(w+1,0)); auto getdiag=[&](int a,int b,int x,int y,vector<int>&v,int mode){ while(dist(a,b,x,y)==k){ if(valid(a,b))v.pb(get(a,b)); if(mode)a--,b--; else a++,b--; } }; if(k==1){ for(int i=0;i<h;i+=h-1){ for(int j=0;j<w;j++){ vector<int>v; getdiag(i,j+k,i,j,v,1); getdiag(i,j+k,i,j,v,0); getdiag(i+k,j,i,j,v,1); getdiag(i-k,j,i,j,v,0); if(!v.empty()){ int x=add_or(v); ans.pb(add_and({get(i,j),x})); } } if(h==1)break; } for(int i=0;i<h;i++){ for(int j=0;j<w;j+=w-1){ vector<int>v; getdiag(i,j+k,i,j,v,1); getdiag(i,j+k,i,j,v,0); getdiag(i+k,j,i,j,v,1); getdiag(i-k,j,i,j,v,0); if(!v.empty()){ int x=add_or(v); ans.pb(add_and({get(i,j),x})); } } if(w==1)break; } vector<int>idrow(h),idcol(w); vector<int>row2(h),col2(w); for(int i=0;i<h;i++){ vector<int>v; for(int j=0;j<w;j++)v.pb(get(i,j)); if(v.size())idrow[i]=add_or(v); } for(int j=0;j<w;j++){ vector<int>v; for(int i=0;i<h;i++)v.pb(get(i,j)); if(v.size())idcol[j]=add_or(v); } for(int i=1;i<w;i++)col2[i]=add_or({idcol[i],idcol[i-1]}); for(int i=1;i<h;i++)row2[i]=add_or({idrow[i],idrow[i-1]}); for(int k=0;k<2;k++){ vector<int>v,v2; for(int i=1;i<col2.size();i++)v.pb(col2[i]); for(auto i:idrow)v2.pb(i); if(v.size()&&v2.size()){ int x=add_xor(v2); int y=add_xor(v); vector<int>bruh={x,y}; ans.pb(add_and(bruh)); } swap(col2,row2); swap(idrow,idcol); } if(ans.size())add_or(ans); return; } for(int i=0;i<h;i++)for(int j=0;j<w;j++){ vector<int>v; if(h>30&&w>30){ getdiag(i,j+k,i,j,v,1); getdiag(i,j+k,i,j,v,0); if(v.size()){ int x=add_or(v); x=add_and({get(i,j),x}); } return; } getdiag(i,j+k,i,j,v,1); getdiag(i,j+k,i,j,v,0); getdiag(i+k,j,i,j,v,1); getdiag(i-k,j,i,j,v,0); if(!v.empty()){ int x=add_or(v); ans.pb(add_and({get(i,j),x})); } } sort(all(ans)); ans.erase(unique(all(ans)),ans.end()); add_or(ans); return; } /* int32_t main(){ int a,b,k;cin>>a>>b>>k; int mx=0; construct_network(1,5,1); return 0; for(int i=1;i<=2;i++)for(int j=2;j<=2;j++){ cnt=0; construct_network(i,j,1); mx=max(mx,cnt); } cout<<mx; }*/

Compilation message (stderr)

vision.cpp: In function 'void construct_network(int, int, int)':
vision.cpp:110:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  110 |    for(int i=1;i<col2.size();i++)v.pb(col2[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...