제출 #955308

#제출 시각아이디문제언어결과실행 시간메모리
9553088pete8Vision Program (IOI19_vision)C++17
0 / 100
7 ms1236 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){ vector<int>ans; for(int i=0;i<h;i+=h-1)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})); } } 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})); } } add_or(ans); return; }/* int32_t main(){ int a,b,k;cin>>a>>b>>k; construct_network(a,b,k); cout<<cnt<<'\n'; }*/

컴파일 시 표준 에러 (stderr) 메시지

vision.cpp: In function 'void construct_network(int, int, int)':
vision.cpp:94:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   94 |    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...