| Task: | Shakki |
| Sender: | Henrik Lievonen |
| Submission time: | 2015-12-04 20:20:20 +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 | TIME LIMIT EXCEEDED | -- | 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 <iostream>
#include <cstdint>
#include <array>
#include <string>
#include <vector>
#include <random>
using namespace std;
mt19937 rnd(0);
class lauta {
uint64_t state;
public:
lauta(uint64_t state): state(state ){}
lauta(array<array<char, 8>, 8> state) {
this->state = 0;
for (int x = 0; x < 8; x++)
for (int y = 0; y < 8; y++)
if (state[x][y] == 'M')
this->state |= uint64_t(1) << indeksi(x, y);
}
lauta pyorita(const int x, const int y) {
lauta uusi = *this;
uusi.aseta(x, y, lue(x, y + 1));
uusi.aseta(x + 1, y, lue(x, y));
uusi.aseta(x + 1, y + 1, lue(x + 1, y));
uusi.aseta(x, y + 1, lue(x + 1, y + 1));
return uusi;
}
void aseta(const int x, const int y, const bool v) {
int i = indeksi(x, y);
if (v)
this->state |= (uint64_t(1) << i);
else
this->state &= ~(uint64_t(1) << i);
}
bool lue(const int x,const int y) const {
int i = indeksi(x, y);
return this->state & (uint64_t(1) << i);
}
private:
int indeksi(const int x,const int y) const {
return 8 * x + y;
}
};
bool onkovalmis(const lauta &l) {
for (int i = 1; i < 8; i++) {
for (int j = 1; j < 8; j++) {
if (l.lue(i, j) == l.lue(i, j - 1) || l.lue(i, j) == l.lue(i - 1, j))
return false;
}
}
return true;
}
int laskeoikeat(const lauta &l) {
int r = 0;
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
r += l.lue(i, j) == (i + j) % 2;
}
}
return r;
}
int main() {
cin.sync_with_stdio(false);
cin.tie(nullptr);
array<array<char, 8>, 8> state;
for (int i = 0; i < 8; i++) {
string s;
cin >> s;
for (int j = 0; j < 8; j++)
state[i][j] = s[j];
}
lauta l(state);
bool kasvata = laskeoikeat(l) > 32;
vector<pair<int, int>> res;
while (!onkovalmis(l)) {
int nyt = laskeoikeat(l);
vector<pair<int, int>> vaihtoehdot;
lauta l2(0);
pair<int, int> v;
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 7; j++) {
lauta l2 = l.pyorita(i, j);
if (kasvata) {
if (laskeoikeat(l2) > nyt) {
res.push_back(make_pair(i, j));
l = l2;
goto next;
}
}
else {
if (laskeoikeat(l2) < nyt) {
res.push_back(make_pair(i, j));
l = l2;
goto next;
}
}
}
}
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 7; j++) {
lauta l2 = l.pyorita(i, j);
if (laskeoikeat(l2) == nyt) {
vaihtoehdot.push_back(make_pair(i, j));
}
}
}
if (!vaihtoehdot.size()) {
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 7; j++) {
vaihtoehdot.push_back(make_pair(i, j));
}
}
}
v = vaihtoehdot[rnd() % vaihtoehdot.size()];
l2 = l.pyorita(v.first, v.second);
l = l2;
res.push_back(v);
next:;
}
cout << res.size() << '\n';
for (auto r : res) {
cout << r.first + 1 << " " << r.second + 1 << "\n";
}
}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: TIME LIMIT EXCEEDED
| input |
|---|
| MVMVVMVM VVMVVMVM MMMMVMVV MVVMMVVV MMMMMVVV ... |
| correct output |
|---|
| 5000 |
| user output |
|---|
| (empty) |
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) |
