제출 #231074

#제출 시각아이디문제언어결과실행 시간메모리
231074tinjyuVision Program (IOI19_vision)C++14
0 / 100
16 ms1532 KiB
#include "vision.h" #include <iostream> #include <vector> using namespace std; long long int n,m,k,tmp,now,ra[10005],la[10005],rsum[10005][2],lsum[10005][2]; void check(int g) { vector<int> v; rsum[1][0]=ra[1]; rsum[ra[0]][1]=ra[ra[0]]; for(int i=2;i<=ra[0];i++) { v.clear(); v.push_back(rsum[i-1][0]); v.push_back(ra[i]); add_or(v); now++; rsum[i][0]=now; } for(int i=ra[0]-1;i>=1;i--) { v.clear(); v.push_back(rsum[i+1][1]); v.push_back(ra[i]); add_or(v); now++; rsum[i][1]=now; } for(int i=1;i<=ra[0];i++) { //cout<<rsum[i][0]<<" "<<rsum[i][1]<<endl; } lsum[1][0]=la[1]; lsum[la[0]][1]=la[la[0]]; for(int i=2;i<=la[0];i++) { v.clear(); v.push_back(lsum[i-1][0]); v.push_back(la[i]); add_or(v); now++; lsum[i][0]=now; } for(int i=la[0]-1;i>=1;i--) { v.clear(); v.push_back(lsum[i+1][1]); v.push_back(la[i]); add_or(v); now++; lsum[i][1]=now; } vector<int> v2; for(int i=1;i<=ra[0]-g-1;i++) { v.clear(); v.push_back(rsum[i][0]); v.push_back(rsum[i+g+1][1]); add_and(v); now++; v2.push_back(now); //cout<<i<<" "<<now<<endl; } add_or(v2); now++; long long int x=now; v2.clear(); for(int i=1;i<=la[0]-g-1;i++) { v.clear(); v.push_back(lsum[i][0]); v.push_back(lsum[i+g+1][1]); add_and(v); now++; v2.push_back(now); } add_or(v2); now++; long long int y=now; v2.clear(); v2.push_back(x); v2.push_back(y); add_or(v2); now++; add_not(now); now++; } void construct_network(int H, int W, int K) { vector<int> v; n=H; m=W; k=K; now=n*m-1; for(int i=m;i>=1;i--) { v.clear(); long long int x=1,y=i,p=0; while(x<=n && y<=m) { v.push_back((x-1)*m+y-1); p++; x++; y++; } //for(int i=0;i<p;i++)cout<<v[i]<<" "; //cout<<endl; tmp=add_or(v); now++; ra[0]++; ra[ra[0]]=now; } for(int i=2;i<=n;i++) { v.clear(); long long int x=i,y=1,p=0; while(x<=n && y<=m) { v.push_back((x-1)*m+y-1); p++; x++; y++; } //for(int i=0;i<p;i++)cout<<v[i]<<" "; //cout<<endl; tmp=add_or(v); now++; ra[0]++; ra[ra[0]]=now; } for(int i=1;i<=m;i++) { v.clear(); long long int x=1,y=i,p=0; while(x<=n && y>=1) { v.push_back((x-1)*m+y-1); x++; y--; p++; } tmp=add_or(v); now++; la[0]++; la[la[0]]=now; } for(int i=2;i<=n;i++) { v.clear(); long long int x=i,y=m,p=0; while(x<=n && y>=1) { v.push_back((x-1)*m+y-1); x++; y--; p++; } tmp=add_or(v); now++; la[0]++; la[la[0]]=now; } check(k-1); long long int x=now; check(k); long long int y=now; //cout<<x<<" "<<y<<endl; vector<int>v2; v2.push_back(x); v2.push_back(y); add_xor(v2); }
#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...