| Task: | Shakki |
| Sender: | |
| Submission time: | 2015-12-04 20:52:08 +0200 |
| Language: | C++ |
| Status: | READY |
| Result: | 0 |
| group | verdict | score |
|---|---|---|
| #1 | TIME LIMIT EXCEEDED | 0 |
| #2 | TIME LIMIT EXCEEDED | 0 |
| #3 | TIME LIMIT EXCEEDED | 0 |
| #4 | TIME LIMIT EXCEEDED | 0 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | TIME LIMIT EXCEEDED | -- | 1 | details |
| #2 | TIME LIMIT EXCEEDED | -- | 1 | details |
| #3 | TIME LIMIT EXCEEDED | -- | 1 | details |
| #4 | TIME LIMIT EXCEEDED | -- | 1 | details |
| #5 | TIME LIMIT EXCEEDED | -- | 1 | details |
| #6 | TIME LIMIT EXCEEDED | -- | 1 | details |
| #7 | TIME LIMIT EXCEEDED | -- | 1 | details |
| #8 | TIME LIMIT EXCEEDED | -- | 1 | details |
| #9 | TIME LIMIT EXCEEDED | -- | 1 | details |
| #10 | TIME LIMIT EXCEEDED | -- | 1 | details |
| #11 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #12 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #13 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #14 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #15 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #16 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #17 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #18 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #19 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #20 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #21 | TIME LIMIT EXCEEDED | -- | 3 | details |
| #22 | TIME LIMIT EXCEEDED | -- | 3 | details |
| #23 | TIME LIMIT EXCEEDED | -- | 3 | details |
| #24 | ACCEPTED | 0.05 s | 3 | details |
| #25 | TIME LIMIT EXCEEDED | -- | 3 | details |
| #26 | TIME LIMIT EXCEEDED | -- | 3 | details |
| #27 | TIME LIMIT EXCEEDED | -- | 3 | details |
| #28 | TIME LIMIT EXCEEDED | -- | 3 | details |
| #29 | TIME LIMIT EXCEEDED | -- | 3 | details |
| #30 | TIME LIMIT EXCEEDED | -- | 3 | details |
| #31 | TIME LIMIT EXCEEDED | -- | 4 | details |
| #32 | TIME LIMIT EXCEEDED | -- | 4 | details |
| #33 | TIME LIMIT EXCEEDED | -- | 4 | details |
| #34 | TIME LIMIT EXCEEDED | -- | 4 | details |
| #35 | TIME LIMIT EXCEEDED | -- | 4 | details |
| #36 | TIME LIMIT EXCEEDED | -- | 4 | details |
| #37 | TIME LIMIT EXCEEDED | -- | 4 | details |
| #38 | TIME LIMIT EXCEEDED | -- | 4 | details |
| #39 | TIME LIMIT EXCEEDED | -- | 4 | details |
| #40 | TIME LIMIT EXCEEDED | -- | 4 | details |
Code
#include <bits/stdc++.h>
#define F first
#define S second
using 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
// VM
int 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
// MV
if (s[i][ii]=='V'&&s[i][ii+1]=='V'&&s[i+1][ii]=='M'&&s[i+1][ii+1]=='V'){
ts=1;
}
// MV
// VV
if (s[i][ii]=='M'&&s[i][ii+1]=='V'&&s[i+1][ii]=='V'&&s[i+1][ii+1]=='V'){
ts=2;
}
// VM
// VV
if (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
// VM
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
// MV
if (s[i][ii]!='V'&&s[i][ii+1]!='V'&&s[i+1][ii]!='M'&&s[i+1][ii+1]!='V'){
ts=1;
}
// MV
// VV
if (s[i][ii]!='M'&&s[i][ii+1]!='V'&&s[i+1][ii]!='V'&&s[i+1][ii+1]!='V'){
ts=2;
}
// VM
// VV
if (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);
}
v.clear();
}
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: TIME LIMIT EXCEEDED
| input |
|---|
| VMMVVMVV MMVVMVVV MMVVMMMM MVVVMVVM MVVVVMVM ... |
| correct output |
|---|
| 100000 |
| user output |
|---|
| (empty) |
Test 2
Group: 1
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| MVMVVMMV VVMMVVVV VMMVMMVM MVVVVMVM MVMVMMVM ... |
| correct output |
|---|
| 100000 |
| user output |
|---|
| (empty) |
Test 3
Group: 1
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| VMMMVMVV MMMVMVMV VMMVMVVM VVVMVMMV MVMVMVMV ... |
| correct output |
|---|
| 100000 |
| user output |
|---|
| (empty) |
Test 4
Group: 1
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| VVVMVMVV VMMVMVMM MVVMMVMV VMVMMVMM MMVVMMVM ... |
| correct output |
|---|
| 100000 |
| user output |
|---|
| (empty) |
Test 5
Group: 1
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| MVMVVMMM VVMMVVMV MVVMVVMM VMVMVMMV MMVMVVVM ... |
| correct output |
|---|
| 100000 |
| user output |
|---|
| (empty) |
Test 6
Group: 1
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| VMMVMVVM VVMMVVMM MMMVMVVM VMMVMMVM MVMVMMMV ... |
| correct output |
|---|
| 100000 |
| user output |
|---|
| (empty) |
Test 7
Group: 1
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| MVVVVMMM MMMMMMMM VVVVVMMV MMVVMVVM VMVVVVMV ... |
| correct output |
|---|
| 100000 |
| user output |
|---|
| (empty) |
Test 8
Group: 1
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| VMMVMVMM MMMVVMMM MVVVVVVV VVVVMMMV MVVVMVVM ... |
| correct output |
|---|
| 100000 |
| user output |
|---|
| (empty) |
Test 9
Group: 1
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| VVVVVMMM MMVVVVVV MVVVMMMM VVMVVVVM VMMVMVMM ... |
| correct output |
|---|
| 100000 |
| user output |
|---|
| (empty) |
Test 10
Group: 1
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| VMMVMMMM VVMVVVVV VMMVMVMV VMMVMVMM VVVMMMMM ... |
| correct output |
|---|
| 100000 |
| user output |
|---|
| (empty) |
Test 11
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| VMVMVVMM MMVMVVMM VMVVVMMV VVVMVMVM VVMMVVMM ... |
| correct output |
|---|
| 25000 |
| user output |
|---|
| (empty) |
Test 12
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| MVMVVMVV VMMVVMVM VMVVVMMM VMMMMVVM MMVVVMMM ... |
| correct output |
|---|
| 25000 |
| user output |
|---|
| (empty) |
Test 13
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| MVVMMVVV MMVVMVMM VVVMVMVV VMVMMMMM MVVMMVMV ... |
| correct output |
|---|
| 25000 |
| user output |
|---|
| (empty) |
Test 14
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| VVMMMVMV VMVVVMVV VVMVVVMM MVVMVMVM MMVVMMMM ... |
| correct output |
|---|
| 25000 |
| user output |
|---|
| (empty) |
Test 15
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| MVVVMVVV MMMMVMMM MVMMMVVM MMVVVMVM VMVVVMMV ... |
| correct output |
|---|
| 25000 |
| user output |
|---|
| (empty) |
Test 16
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| VMMVMVVM VMMVVVVV MVMVMMVM VMMVVVMV VVMVMMVM ... |
| correct output |
|---|
| 25000 |
| user output |
|---|
| (empty) |
Test 17
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| MVVMMVVM MVVVMMMV MVVMMVVM VMMVMVMV VMMVMMMM ... |
| correct output |
|---|
| 25000 |
| user output |
|---|
| (empty) |
Test 18
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| MVMMVVMM VVMMMMVV VMVVVVVM MVMMMVMV VMVVVMVM ... |
| correct output |
|---|
| 25000 |
| user output |
|---|
| (empty) |
Test 19
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| MVVVVVVV VMMVMVVM VMVMMMMV MVMVMMMM MMVVVMMM ... |
| correct output |
|---|
| 25000 |
| user output |
|---|
| (empty) |
Test 20
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| MVVVMMMM MMVMMVMV MVVVVVMM VVMMMVVM VVVMVMVV ... |
| correct output |
|---|
| 25000 |
| user output |
|---|
| (empty) |
Test 21
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| VMVVMVMM MMMMVMMV VVVMVVVV MVMVMVVM VMMVMMMM ... |
| correct output |
|---|
| 5000 |
| user output |
|---|
| (empty) |
Test 22
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| VVVVVVMM MMMVMMVV VVVVVVMV MMMVMVVV MVVMMMMV ... |
| correct output |
|---|
| 5000 |
| user output |
|---|
| (empty) |
Test 23
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| MMVMVMVV MMVVMVVM VMMVVMVM MMMMMMVV MVVVVMVM ... |
| correct output |
|---|
| 5000 |
| user output |
|---|
| (empty) |
Test 24
Group: 3
Verdict: ACCEPTED
| input |
|---|
| MVMVVMVM VVMVVMVM MMMMVMVV MVVMMVVV MMMMMVVV ... |
| correct output |
|---|
| 5000 |
| user output |
|---|
| 71 1 2 1 4 2 7 2 7 ... |
Test 25
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| MVVVMVVM MMMMVVMV VMMVMMVV VVMVMVMV MVMMMVMM ... |
| correct output |
|---|
| 5000 |
| user output |
|---|
| (empty) |
Test 26
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| VMVMVVVM MMMVVVMM MMVVVVVM VVVVMMVV VMMVVMMV ... |
| correct output |
|---|
| 5000 |
| user output |
|---|
| (empty) |
Test 27
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| MMVMMVVM MVVVMVMV MVVVMVVM VMVMMMVV VMMVVVVV ... |
| correct output |
|---|
| 5000 |
| user output |
|---|
| (empty) |
Test 28
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| MVMMVMMV VMVMMMVV MMMMVVMV VVVVMMMM MMMVMMVV ... |
| correct output |
|---|
| 5000 |
| user output |
|---|
| (empty) |
Test 29
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| VVVVMVMV MMMVVMVM MVVVMVMV VVVMVVMM VMMMMMVV ... |
| correct output |
|---|
| 5000 |
| user output |
|---|
| (empty) |
Test 30
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| MVVVMVVV MMVVMMMM MVVVVVVV MVMVMMMV VMMMVMMM ... |
| correct output |
|---|
| 5000 |
| user output |
|---|
| (empty) |
Test 31
Group: 4
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| MVMMVMMV VVVMMVVV VMMVVMMV VVMMMVVM VVVMMMVV ... |
| correct output |
|---|
| 250 |
| user output |
|---|
| (empty) |
Test 32
Group: 4
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| VVMMVVVM VMVVMMVV VMMMMMMV VVMVMVVV VMMVMVMM ... |
| correct output |
|---|
| 250 |
| user output |
|---|
| (empty) |
Test 33
Group: 4
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| MMVVMVMV VVVMVMMM VVVVMVMM MVVMVVMV VMMVMVVM ... |
| correct output |
|---|
| 250 |
| user output |
|---|
| (empty) |
Test 34
Group: 4
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| VMVMVVMV MVVMMMMM MMVVMMMM VMVMVVVM VMMMVVVM ... |
| correct output |
|---|
| 250 |
| user output |
|---|
| (empty) |
Test 35
Group: 4
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| VMVMVMMM VMMVVVMM MMVMVMMM MVMMVVVV VMMVMMMV ... |
| correct output |
|---|
| 250 |
| user output |
|---|
| (empty) |
Test 36
Group: 4
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| MVMVMVMM MVMVMMMV MMVVVVMM MVMVVVVV VMMMVVMM ... |
| correct output |
|---|
| 250 |
| user output |
|---|
| (empty) |
Test 37
Group: 4
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| VMMMMVMM VVMMMVMV VMVVVVVV MVMMMVVM VMVMMVVM ... |
| correct output |
|---|
| 250 |
| user output |
|---|
| (empty) |
Test 38
Group: 4
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| VMMVMVMV VVMVMVMM MMMVMVMM MVVVVMMM MMVVVMVV ... |
| correct output |
|---|
| 250 |
| user output |
|---|
| (empty) |
Test 39
Group: 4
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| MMMMMVMV MVVMMMMV VMVVVVMM VMVVVMMV MVMMMVMM ... |
| correct output |
|---|
| 250 |
| user output |
|---|
| (empty) |
Test 40
Group: 4
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| VMMMMMMV VMMVVVVV MVMMVMMV MVVVVMMV MVVVVMMM ... |
| correct output |
|---|
| 250 |
| user output |
|---|
| (empty) |
