Go to diff to previous submission
#include <vector> #include <list> #include <map> #include <set> #include <algorithm> #include <numeric> #include <utility> #include <sstream> #include <iostream> #include <iomanip> #include <cstdio> #include <cmath> #include <cstdlib> #include <string> #define vi vector <int> #define vvi vector <vi> #define vvvi vector <vvi> #define vl vector <long long> #define vpii vector <pair <int,int> > #define mp(x,y) make_pair(x,y) #define all(x) (x).begin(),(x).end() #define sz(x) (int)(x).size() #define FOR(i,n) for(ll i=0;i<int(n);i++) #define READ(v,n) {FOR(i,n){ll x;cin>>x;v.pb(x);} } #define gmin(a,b) {if (b<a) a=b;} #define gmax(a,b) {if (b>a) a=b;} #define pb push_back #define ppb pop_back typedef long long ll; typedef unsigned long long ull; using namespace std; vvi invert(vvi a){ vvi b=a; FOR(i,5) FOR(j,5){ b[i][j]=a[j][i]; } return b; } vvi rotate(vvi a){ vvi b=a; FOR(i,5) FOR(j,5){ b[i][j]=a[4-j][i]; } int c; rep: c=0; FOR(i,5){ if(b[0][i]==1)c++; } if(c==0){ vvi c=b; FOR(i,5) FOR(j,5){ if(i==4){c[i][j]=0;}else{c[i][j]=b[i+1][j];} } b=c; goto rep; } rep2: c=0; FOR(i,5){ if(b[i][0]==1)c++; } if(c==0){ vvi c=b; FOR(i,5) FOR(j,5){ if(j==4){c[i][j]=0;}else{c[i][j]=b[i][j+1];} } b=c; goto rep2; } return b; } int main(){ vi v(5,0); vvi w; FOR(i,5)w.pb(v); vvvi c; FOR(i,256)c.pb(w); c['F'][1][0]=1; c['F'][2][0]=1; c['F'][0][1]=1; c['F'][1][1]=1; c['F'][1][2]=1; c['I'][0][0]=1; c['I'][0][1]=1; c['I'][0][2]=1; c['I'][0][3]=1; c['I'][0][4]=1; c['L'][0][0]=1; c['L'][0][1]=1; c['L'][0][2]=1; c['L'][0][3]=1; c['L'][1][3]=1; c['N'][1][0]=1; c['N'][1][1]=1; c['N'][0][2]=1; c['N'][1][2]=1; c['N'][0][3]=1; c['P'][0][0]=1; c['P'][1][0]=1; c['P'][0][1]=1; c['P'][1][1]=1; c['P'][0][2]=1; c['T'][0][0]=1; c['T'][1][0]=1; c['T'][2][0]=1; c['T'][1][1]=1; c['T'][1][2]=1; c['U'][0][0]=1; c['U'][2][0]=1; c['U'][0][1]=1; c['U'][1][1]=1; c['U'][2][1]=1; c['V'][0][0]=1; c['V'][0][1]=1; c['V'][0][2]=1; c['V'][1][2]=1; c['V'][2][2]=1; c['W'][0][0]=1; c['W'][0][1]=1; c['W'][1][1]=1; c['W'][1][2]=1; c['W'][2][2]=1; c['X'][1][0]=1; c['X'][0][1]=1; c['X'][1][1]=1; c['X'][2][1]=1; c['X'][1][2]=1; c['Y'][1][0]=1; c['Y'][0][1]=1; c['Y'][1][1]=1; c['Y'][1][2]=1; c['Y'][1][3]=1; c['Z'][0][0]=1; c['Z'][1][0]=1; c['Z'][1][1]=1; c['Z'][1][2]=1; c['Z'][2][2]=1; char x,y; while(cin>>x>>y){ string s=""; set <string> sset; vvi aa=c[x]; vvi bb=c[y]; { FOR(i,2) FOR(r,4) FOR(x,6) FOR(y,4){ if((x=='I' || x=='W' || x=='X' || x=='V' || x=='U' || x=='T') && i==1){continue;} vvi a=aa; vvi p(6,vi(4,0)); if(i==1){a=invert(a);} FOR(j,r){a=rotate(a);} FOR(k,5) FOR(l,5){ if(a[k][l]==1 && (x+k>=6 || y+l>=4)){goto con;} if(a[k][l]==1){ if(p[x+k][y+l]==1){goto con;} p[x+k][y+l]+=a[k][l]; } } FOR(ii,2) FOR(rr,4) FOR(xx,6) FOR(yy,4){ if((y=='I' || y=='W' || y=='X' || y=='V' || y=='U' || y=='T') && i==1){continue;} vvi b=bb; vvi pp=p; if(ii==1){b=invert(b);} FOR(j,rr){b=rotate(b);} FOR(k,5) FOR(l,5){ if(b[k][l]==1 && (xx+k>=6 || yy+l>=4)){goto con2;} if(b[k][l]==1){ if(pp[xx+k][yy+l]==1){goto con2;} pp[xx+k][yy+l]+=b[k][l]; } } s=""; FOR(k,6) FOR(l,4) s=s+(char)(pp[k][l]+'0'); sset.insert(s); con2: continue; } con: continue; } } cin>>x>>y; s=""; aa=c[x]; bb=c[y]; FOR(i,2) FOR(r,4) FOR(x,6) FOR(y,4){ if((x=='I' || x=='W' || x=='X' || x=='V' || x=='U' || x=='T') && i==1){continue;} vvi a=aa; vvi p(6,vi(4,0)); if(i==1){a=invert(a);} FOR(j,r){a=rotate(a);} FOR(k,5) FOR(l,5){ if(a[k][l]==1 && (x+k>=6 || y+l>=4)){goto con3;} if(a[k][l]==1){ if(p[x+k][y+l]==1){goto con3;} p[x+k][y+l]+=a[k][l]; } } FOR(ii,2) FOR(rr,4) FOR(xx,6) FOR(yy,4){ if((y=='I' || y=='W' || y=='X' || y=='V' || y=='U' || y=='T') && i==1){continue;} vvi b=bb; vvi pp=p; if(ii==1){b=invert(b);} FOR(j,rr){b=rotate(b);} FOR(k,5) FOR(l,5){ if(b[k][l]==1 && (xx+k>=6 || yy+l>=4)){goto con23;} if(b[k][l]==1){ if(pp[xx+k][yy+l]==1){goto con23;} pp[xx+k][yy+l]+=b[k][l]; } } s=""; FOR(k,6) FOR(l,4) s=s+(char)(pp[k][l]+'0'); if(sset.find(s)!=sset.end()){cout<<"YES"<<endl;goto nextcase;} con23: continue; } con3: continue; } cout<<"NO"<<endl; nextcase: continue; } return 0; }
--- c5.s1105.cteam012.fp.cpp.0.fp.cpp +++ c5.s1135.cteam012.fp.cpp.0.fp.cpp @@ -174,4 +174,5 @@ FOR(x,6) FOR(y,4){ + if((x=='I' || x=='W' || x=='X' || x=='V' || x=='U' || x=='T') && i==1){continue;} vvi a=aa; vvi p(6,vi(4,0)); @@ -191,4 +192,5 @@ FOR(xx,6) FOR(yy,4){ + if((y=='I' || y=='W' || y=='X' || y=='V' || y=='U' || y=='T') && i==1){continue;} vvi b=bb; vvi pp=p; @@ -229,4 +231,5 @@ FOR(x,6) FOR(y,4){ + if((x=='I' || x=='W' || x=='X' || x=='V' || x=='U' || x=='T') && i==1){continue;} vvi a=aa; vvi p(6,vi(4,0)); @@ -246,4 +249,5 @@ FOR(xx,6) FOR(yy,4){ + if((y=='I' || y=='W' || y=='X' || y=='V' || y=='U' || y=='T') && i==1){continue;} vvi b=bb; vvi pp=p;