Task: | Shakki |
Sender: | |
Submission time: | 2015-12-04 20:53:14 +0200 |
Language: | C++ |
Status: | READY |
Result: | 100 |
group | verdict | score |
---|---|---|
#1 | ACCEPTED | 28 |
#2 | ACCEPTED | 21 |
#3 | ACCEPTED | 24 |
#4 | ACCEPTED | 27 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.06 s | 1 | details |
#2 | ACCEPTED | 0.05 s | 1 | details |
#3 | ACCEPTED | 0.04 s | 1 | details |
#4 | ACCEPTED | 0.07 s | 1 | details |
#5 | ACCEPTED | 0.05 s | 1 | details |
#6 | ACCEPTED | 0.05 s | 1 | details |
#7 | ACCEPTED | 0.06 s | 1 | details |
#8 | ACCEPTED | 0.05 s | 1 | details |
#9 | ACCEPTED | 0.05 s | 1 | details |
#10 | ACCEPTED | 0.05 s | 1 | details |
#11 | ACCEPTED | 0.06 s | 2 | details |
#12 | ACCEPTED | 0.06 s | 2 | details |
#13 | ACCEPTED | 0.06 s | 2 | details |
#14 | ACCEPTED | 0.06 s | 2 | details |
#15 | ACCEPTED | 0.06 s | 2 | details |
#16 | ACCEPTED | 0.06 s | 2 | details |
#17 | ACCEPTED | 0.05 s | 2 | details |
#18 | ACCEPTED | 0.06 s | 2 | details |
#19 | ACCEPTED | 0.06 s | 2 | details |
#20 | ACCEPTED | 0.05 s | 2 | details |
#21 | ACCEPTED | 0.06 s | 3 | details |
#22 | ACCEPTED | 0.05 s | 3 | details |
#23 | ACCEPTED | 0.05 s | 3 | details |
#24 | ACCEPTED | 0.05 s | 3 | details |
#25 | ACCEPTED | 0.05 s | 3 | details |
#26 | ACCEPTED | 0.05 s | 3 | details |
#27 | ACCEPTED | 0.06 s | 3 | details |
#28 | ACCEPTED | 0.06 s | 3 | details |
#29 | ACCEPTED | 0.05 s | 3 | details |
#30 | ACCEPTED | 0.05 s | 3 | details |
#31 | ACCEPTED | 0.06 s | 4 | details |
#32 | ACCEPTED | 0.06 s | 4 | details |
#33 | ACCEPTED | 0.06 s | 4 | details |
#34 | ACCEPTED | 0.05 s | 4 | details |
#35 | ACCEPTED | 0.05 s | 4 | details |
#36 | ACCEPTED | 0.06 s | 4 | details |
#37 | ACCEPTED | 0.05 s | 4 | details |
#38 | ACCEPTED | 0.05 s | 4 | details |
#39 | ACCEPTED | 0.05 s | 4 | details |
#40 | ACCEPTED | 0.05 s | 4 | details |
Code
#include <bits/stdc++.h>#define F first#define S secondusing namespace std;typedef long long ll;typedef long double ld;string s[10];string ss[10];vector<pair<int, int> > v;void pr(){for (int i=0;i<8;i++){cout<<s[i]<<endl;}cout<<endl;}void turn(int y, int x){assert(y>=0);assert(x>=0);assert(y<7);assert(x<7);v.push_back({x+1, y+1});char t=s[y][x];s[y][x]=s[y+1][x];s[y+1][x]=s[y+1][x+1];s[y+1][x+1]=s[y][x+1];s[y][x+1]=t;}int checkh(int y){int c=0;for (int i=0;i<=y;i++){for (int j=0;j<8;j++){if (s[i][j]=='M') c++;else c--;}}return c;}int checkv(int x){int c=0;for (int i=0;i<=x;i++){for (int j=0;j<8;j++){if (s[j][i]=='M') c++;else c--;}}return c;}int asd(){for (int i=0;i<7;i++){for (int ii=0;ii<7;ii++){if (s[i][ii]=='V'&&s[i][ii+1]=='V'&&s[i+1][ii]=='M'&&s[i+1][ii+1]=='M'){if (checkh(i)<=-4){turn(i, ii);turn(i, ii);return 1;}}if (s[i][ii]=='M'&&s[i][ii+1]=='M'&&s[i+1][ii]=='V'&&s[i+1][ii+1]=='V'){if (checkh(i)>=4){turn(i, ii);turn(i, ii);return 1;}}}}for (int i=0;i<7;i++){for (int ii=0;ii<7;ii++){if (s[i][ii]=='V'&&s[i][ii+1]=='M'&&s[i+1][ii]=='V'&&s[i+1][ii+1]=='M'){if (checkv(ii)<=-4){turn(i, ii);turn(i, ii);return 1;}}if (s[i][ii]=='M'&&s[i][ii+1]=='V'&&s[i+1][ii]=='M'&&s[i+1][ii+1]=='V'){if (checkv(ii)>=4){turn(i, ii);turn(i, ii);return 1;}}}}return 0;for (int i=0;i<7;i++){for (int ii=0;ii<7;ii++){// VV// VMint ts=-1;if (s[i][ii]=='V'&&s[i][ii+1]=='V'&&s[i+1][ii]=='V'&&s[i+1][ii+1]=='M'){ts=0;}// VV// MVif (s[i][ii]=='V'&&s[i][ii+1]=='V'&&s[i+1][ii]=='M'&&s[i+1][ii+1]=='V'){ts=1;}// MV// VVif (s[i][ii]=='M'&&s[i][ii+1]=='V'&&s[i+1][ii]=='V'&&s[i+1][ii+1]=='V'){ts=2;}// VM// VVif (s[i][ii]=='V'&&s[i][ii+1]=='M'&&s[i+1][ii]=='V'&&s[i+1][ii+1]=='V'){ts=3;}if (ts>-1){int ns=-1;if (checkv(ii)<=-2) ns=1;if (checkh(i)<=-2) ns=2;if (checkv(ii)>=2) ns=3;if (checkh(i)>=2) ns=0;if (ns>-1){int t=(ns-ts+4)%4;if (t>0){for (int j=0;j<t;j++){turn(i, ii);}return 1;}}}// VV// VMts=-1;if (s[i][ii]!='V'&&s[i][ii+1]!='V'&&s[i+1][ii]!='V'&&s[i+1][ii+1]!='M'){ts=0;}// VV// MVif (s[i][ii]!='V'&&s[i][ii+1]!='V'&&s[i+1][ii]!='M'&&s[i+1][ii+1]!='V'){ts=1;}// MV// VVif (s[i][ii]!='M'&&s[i][ii+1]!='V'&&s[i+1][ii]!='V'&&s[i+1][ii+1]!='V'){ts=2;}// VM// VVif (s[i][ii]!='V'&&s[i][ii+1]!='M'&&s[i+1][ii]!='V'&&s[i+1][ii+1]!='V'){ts=3;}if (ts>-1){int ns=-1;if (checkv(ii)>=2) ns=1;if (checkh(i)>=2) ns=2;if (checkv(ii)<=-2) ns=3;if (checkh(i)<=-2) ns=0;if (ns>-1){int t=(ns-ts+4)%4;if (t>0){for (int j=0;j<t;j++){turn(i, ii);}return 1;}}}}}return 0;}void up(char c, int y){for (int i=y;i<7;i++){for (int ii=0;ii<7;ii++){if (s[i][ii]==c&&s[i][ii+1]==c) continue;if (s[i][ii]!=c&&s[i][ii+1]!=c){if (s[i+1][ii]==c){turn(i, ii);return;}if (s[i+1][ii+1]==c){turn(i, ii);turn(i, ii);return;}}if (s[i][ii]==c){if (s[i+1][ii]==c){turn(i, ii);return;}}if (s[i][ii+1]==c){if (s[i+1][ii]==c&&s[i+1][ii+1]==c){turn(i, ii);turn(i, ii);return;}if (s[i+1][ii+1]==c){turn(i, ii);turn(i, ii);turn(i, ii);return;}}}}}void left(char c, int y, int x){for (int ii=x;ii<7;ii++){if (s[y][ii]==c&&s[y+1][ii]==c) continue;if (s[y][ii]!=c&&s[y+1][ii]!=c){if (s[y+1][ii+1]==c){turn(y, ii);return;}if (s[y+1][ii]==c){turn(y, ii);turn(y, ii);return;}}if (s[y+1][ii]==c){if (s[y+1][ii+1]==c){turn(y, ii);return;}}if (s[y][ii]==c){if (s[y][ii+1]==c&&s[y+1][ii+1]==c){turn(y, ii);turn(y, ii);return;}if (s[y][ii+1]==c){turn(y, ii);turn(y, ii);turn(y, ii);return;}}}}void gen(int t){for (int i=0;i<t;i++){int a=rand()%7;int b=rand()%7;turn(a, b);}}void trs(){v.clear();for (int i=0;i<8;i++){s[i]=ss[i];}gen(100);for (int i=0;i<7;i++){while (1){int c=0;for (int ii=0;ii<8;ii++){if (s[i][ii]=='V') c++;else c--;}if (c==0) break;if (c>0){up('M', i);}else{up('V', i);}}}for (int i=0;i<8;i+=2){for (int ii=0;ii<7;ii++){while (1){if (s[i][ii]=='V'&&s[i+1][ii]=='V'){left('M', i, ii);}else if(s[i][ii]=='M'&&s[i+1][ii]=='M'){left('V', i, ii);}else{break;}//cout<<i<<" "<<ii<<endl;//pr();}}}//pr();for (int i=0;i<8;i+=2){for (int ii=0;ii<6;ii++){while (1){if (s[i][ii]==s[i][ii+1]&&s[i][ii+1]==s[i][ii+2]){turn(i, ii+1);turn(i, ii+1);}else{break;}//cout<<i<<" "<<ii<<endl;//pr();}}}//pr();for (int i=0;i<8;i+=2){for (int ii=0;ii<6;ii++){while (1){if (s[i][ii]==s[i][ii+1]){for (int j=ii+1;j<7;j+=2){if (s[i][j]==s[i][j+1]){turn(i, j);turn(i, j);}else{turn(i, j);}}}else{break;}//cout<<i<<" "<<ii<<endl;//pr();}}}for (int i=0;i<7;i++){for (int ii=0;ii<7;ii++){if (s[i][ii]==s[i][ii+1]) return;if (s[i][ii]==s[i+1][ii]) return;}}for (int i=0;i<8;i+=2){for (int ii=0;ii<8;ii+=2){if (s[i][ii]!='M') turn(i, ii);}}cout<<v.size()<<endl;for (auto vv:v){cout<<vv.F<<" "<<vv.S<<endl;}exit(0);}int main(){srand(time(0));ios_base::sync_with_stdio(0);cin.tie(0);for (int i=0;i<8;i++){cin>>ss[i];s[i]=ss[i];}//gen(1000);while (1){trs();//cout<<"try"<<endl;}}
Test details
Test 1
Group: 1
Verdict: ACCEPTED
input |
---|
VMMVVMVV MMVVMVVV MMVVMMMM MVVVMVVM MVVVVMVM ... |
correct output |
---|
100000 |
user output |
---|
157 2 4 6 6 4 5 6 1 ... |
Test 2
Group: 1
Verdict: ACCEPTED
input |
---|
MVMVVMMV VVMMVVVV VMMVMMVM MVVVVMVM MVMVMMVM ... |
correct output |
---|
100000 |
user output |
---|
151 5 6 4 2 6 2 1 5 ... |
Test 3
Group: 1
Verdict: ACCEPTED
input |
---|
VMMMVMVV MMMVMVMV VMMVMVVM VVVMVMMV MVMVMVMV ... |
correct output |
---|
100000 |
user output |
---|
185 7 6 5 7 6 5 4 2 ... |
Test 4
Group: 1
Verdict: ACCEPTED
input |
---|
VVVMVMVV VMMVMVMM MVVMMVMV VMVMMVMM MMVVMMVM ... |
correct output |
---|
100000 |
user output |
---|
172 3 4 5 5 2 5 2 4 ... |
Test 5
Group: 1
Verdict: ACCEPTED
input |
---|
MVMVVMMM VVMMVVMV MVVMVVMM VMVMVMMV MMVMVVVM ... |
correct output |
---|
100000 |
user output |
---|
167 4 6 2 3 3 1 4 3 ... |
Test 6
Group: 1
Verdict: ACCEPTED
input |
---|
VMMVMVVM VVMMVVMM MMMVMVVM VMMVMMVM MVMVMMMV ... |
correct output |
---|
100000 |
user output |
---|
194 3 6 2 5 6 2 7 3 ... |
Test 7
Group: 1
Verdict: ACCEPTED
input |
---|
MVVVVMMM MMMMMMMM VVVVVMMV MMVVMVVM VMVVVVMV ... |
correct output |
---|
100000 |
user output |
---|
186 5 5 1 4 3 3 1 4 ... |
Test 8
Group: 1
Verdict: ACCEPTED
input |
---|
VMMVMVMM MMMVVMMM MVVVVVVV VVVVMMMV MVVVMVVM ... |
correct output |
---|
100000 |
user output |
---|
168 1 4 6 2 2 3 4 5 ... |
Test 9
Group: 1
Verdict: ACCEPTED
input |
---|
VVVVVMMM MMVVVVVV MVVVMMMM VVMVVVVM VMMVMVMM ... |
correct output |
---|
100000 |
user output |
---|
204 3 1 1 5 6 3 7 7 ... |
Test 10
Group: 1
Verdict: ACCEPTED
input |
---|
VMMVMMMM VVMVVVVV VMMVMVMV VMMVMVMM VVVMMMMM ... |
correct output |
---|
100000 |
user output |
---|
194 3 5 5 1 3 1 7 6 ... |
Test 11
Group: 2
Verdict: ACCEPTED
input |
---|
VMVMVVMM MMVMVVMM VMVVVMMV VVVMVMVM VVMMVVMM ... |
correct output |
---|
25000 |
user output |
---|
164 1 1 7 7 2 3 3 6 ... |
Test 12
Group: 2
Verdict: ACCEPTED
input |
---|
MVMVVMVV VMMVVMVM VMVVVMMM VMMMMVVM MMVVVMMM ... |
correct output |
---|
25000 |
user output |
---|
165 1 6 7 1 4 3 1 7 ... |
Test 13
Group: 2
Verdict: ACCEPTED
input |
---|
MVVMMVVV MMVVMVMM VVVMVMVV VMVMMMMM MVVMMVMV ... |
correct output |
---|
25000 |
user output |
---|
166 4 6 3 7 7 1 4 3 ... |
Test 14
Group: 2
Verdict: ACCEPTED
input |
---|
VVMMMVMV VMVVVMVV VVMVVVMM MVVMVMVM MMVVMMMM ... |
correct output |
---|
25000 |
user output |
---|
177 5 6 2 7 3 3 4 7 ... |
Test 15
Group: 2
Verdict: ACCEPTED
input |
---|
MVVVMVVV MMMMVMMM MVMMMVVM MMVVVMVM VMVVVMMV ... |
correct output |
---|
25000 |
user output |
---|
193 5 2 6 3 4 4 7 6 ... |
Test 16
Group: 2
Verdict: ACCEPTED
input |
---|
VMMVMVVM VMMVVVVV MVMVMMVM VMMVVVMV VVMVMMVM ... |
correct output |
---|
25000 |
user output |
---|
180 1 4 5 1 6 5 7 6 ... |
Test 17
Group: 2
Verdict: ACCEPTED
input |
---|
MVVMMVVM MVVVMMMV MVVMMVVM VMMVMVMV VMMVMMMM ... |
correct output |
---|
25000 |
user output |
---|
191 6 4 5 6 1 7 7 2 ... |
Test 18
Group: 2
Verdict: ACCEPTED
input |
---|
MVMMVVMM VVMMMMVV VMVVVVVM MVMMMVMV VMVVVMVM ... |
correct output |
---|
25000 |
user output |
---|
212 1 2 2 6 6 1 4 5 ... |
Test 19
Group: 2
Verdict: ACCEPTED
input |
---|
MVVVVVVV VMMVMVVM VMVMMMMV MVMVMMMM MMVVVMMM ... |
correct output |
---|
25000 |
user output |
---|
172 7 3 1 6 6 3 5 7 ... |
Test 20
Group: 2
Verdict: ACCEPTED
input |
---|
MVVVMMMM MMVMMVMV MVVVVVMM VVMMMVVM VVVMVMVV ... |
correct output |
---|
25000 |
user output |
---|
152 2 6 7 5 3 1 4 6 ... |
Test 21
Group: 3
Verdict: ACCEPTED
input |
---|
VMVVMVMM MMMMVMMV VVVMVVVV MVMVMVVM VMMVMMMM ... |
correct output |
---|
5000 |
user output |
---|
166 7 1 7 7 3 6 7 5 ... |
Test 22
Group: 3
Verdict: ACCEPTED
input |
---|
VVVVVVMM MMMVMMVV VVVVVVMV MMMVMVVV MVVMMMMV ... |
correct output |
---|
5000 |
user output |
---|
188 3 3 5 2 2 1 6 2 ... |
Test 23
Group: 3
Verdict: ACCEPTED
input |
---|
MMVMVMVV MMVVMVVM VMMVVMVM MMMMMMVV MVVVVMVM ... |
correct output |
---|
5000 |
user output |
---|
196 4 6 6 3 5 2 3 2 ... |
Test 24
Group: 3
Verdict: ACCEPTED
input |
---|
MVMVVMVM VVMVVMVM MMMMVMVV MVVMMVVV MMMMMVVV ... |
correct output |
---|
5000 |
user output |
---|
188 6 6 7 7 1 7 7 7 ... |
Test 25
Group: 3
Verdict: ACCEPTED
input |
---|
MVVVMVVM MMMMVVMV VMMVMMVV VVMVMVMV MVMMMVMM ... |
correct output |
---|
5000 |
user output |
---|
192 1 3 1 7 2 1 5 1 ... |
Test 26
Group: 3
Verdict: ACCEPTED
input |
---|
VMVMVVVM MMMVVVMM MMVVVVVM VVVVMMVV VMMVVMMV ... |
correct output |
---|
5000 |
user output |
---|
197 1 6 7 1 4 3 1 7 ... |
Test 27
Group: 3
Verdict: ACCEPTED
input |
---|
MMVMMVVM MVVVMVMV MVVVMVVM VMVMMMVV VMMVVVVV ... |
correct output |
---|
5000 |
user output |
---|
208 4 5 2 6 5 2 1 2 ... |
Test 28
Group: 3
Verdict: ACCEPTED
input |
---|
MVMMVMMV VMVMMMVV MMMMVVMV VVVVMMMM MMMVMMVV ... |
correct output |
---|
5000 |
user output |
---|
192 5 6 5 4 7 6 5 1 ... |
Test 29
Group: 3
Verdict: ACCEPTED
input |
---|
VVVVMVMV MMMVVMVM MVVVMVMV VVVMVVMM VMMMMMVV ... |
correct output |
---|
5000 |
user output |
---|
202 2 6 7 2 7 7 7 7 ... |
Test 30
Group: 3
Verdict: ACCEPTED
input |
---|
MVVVMVVV MMVVMMMM MVVVVVVV MVMVMMMV VMMMVMMM ... |
correct output |
---|
5000 |
user output |
---|
174 3 2 4 1 5 6 4 7 ... |
Test 31
Group: 4
Verdict: ACCEPTED
input |
---|
MVMMVMMV VVVMMVVV VMMVVMMV VVMMMVVM VVVMMMVV ... |
correct output |
---|
250 |
user output |
---|
192 4 5 2 6 2 3 7 7 ... |
Test 32
Group: 4
Verdict: ACCEPTED
input |
---|
VVMMVVVM VMVVMMVV VMMMMMMV VVMVMVVV VMMVMVMM ... |
correct output |
---|
250 |
user output |
---|
173 2 5 2 6 3 3 7 5 ... |
Test 33
Group: 4
Verdict: ACCEPTED
input |
---|
MMVVMVMV VVVMVMMM VVVVMVMM MVVMVVMV VMMVMVVM ... |
correct output |
---|
250 |
user output |
---|
184 5 3 3 5 7 7 3 7 ... |
Test 34
Group: 4
Verdict: ACCEPTED
input |
---|
VMVMVVMV MVVMMMMM MMVVMMMM VMVMVVVM VMMMVVVM ... |
correct output |
---|
250 |
user output |
---|
206 5 3 6 6 2 5 7 1 ... |
Test 35
Group: 4
Verdict: ACCEPTED
input |
---|
VMVMVMMM VMMVVVMM MMVMVMMM MVMMVVVV VMMVMMMV ... |
correct output |
---|
250 |
user output |
---|
186 7 3 3 5 6 7 3 6 ... |
Test 36
Group: 4
Verdict: ACCEPTED
input |
---|
MVMVMVMM MVMVMMMV MMVVVVMM MVMVVVVV VMMMVVMM ... |
correct output |
---|
250 |
user output |
---|
185 6 2 4 6 4 4 5 6 ... |
Test 37
Group: 4
Verdict: ACCEPTED
input |
---|
VMMMMVMM VVMMMVMV VMVVVVVV MVMMMVVM VMVMMVVM ... |
correct output |
---|
250 |
user output |
---|
186 5 5 3 2 6 2 3 2 ... |
Test 38
Group: 4
Verdict: ACCEPTED
input |
---|
VMMVMVMV VVMVMVMM MMMVMVMM MVVVVMMM MMVVVMVV ... |
correct output |
---|
250 |
user output |
---|
199 1 6 1 3 5 6 4 6 ... |
Test 39
Group: 4
Verdict: ACCEPTED
input |
---|
MMMMMVMV MVVMMMMV VMVVVVMM VMVVVMMV MVMMMVMM ... |
correct output |
---|
250 |
user output |
---|
192 5 2 6 7 1 3 4 7 ... |
Test 40
Group: 4
Verdict: ACCEPTED
input |
---|
VMMMMMMV VMMVVVVV MVMMVMMV MVVVVMMV MVVVVMMM ... |
correct output |
---|
250 |
user output |
---|
182 7 2 5 6 2 6 2 1 ... |