# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
38855 | Abelyan | Riddick's Cube (IZhO13_riddicks) | C++14 | 0 ms | 2016 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <iostream>
#include <vector>
#include <cstdio>
#include <algorithm>
#include <climits>
using namespace std;
int a[5][5],b[5],c[5],d[5][5],qan,mn=INT_MAX;
int n, m;
void check(){
bool mb = true;
for (int i = 0; i < n; i++){
int qur = d[i][0];
for (int j = 1; j < m; j++){
if (d[i][j] != qur){
mb = false;
break;
}
}
if (!mb) break;
}
if (mb){
if (qan < mn) mn = qan;
return;
}
mb = true;
for (int j = 0; j < m; j++){
int qur = d[0][j];
for (int i = 1; i < n; i++){
if (d[i][j] != qur){
mb = false;
break;
}
}
if (!mb){
return;
}
}
if (qan < mn) mn = qan;
}
void solve(){
/*
for (int i = 0; i < n; i++){
cout << c[i] << " ";
}
cout << endl;
for (int i = 0; i < m; i++){
cout << b[i] << " ";
}
cout << endl;
*/
for (int i = 0; i < n; i++){
for (int j = 0; j < m; j++){
d[(i + b[j]) % n][(j + c[(i + b[j]) % n]) % m] = a[i][j];
}
}
/*
for (int i = 0; i < n; i++){
for (int j = 0; j < m; j++){
cout << d[i][j] << " ";
}
cout << endl;
}
cout << qan;
cout << endl << endl;
*/
check();
}
void solve2(int k = 1){
if (k == n){
solve();
return;
}
for (int i = 0; i < m; i++){
qan += c[k] = i;
solve2(k + 1);
qan -= i;
}
}
void solve1(int k=1){
if (k == 1) qan = 0;
if (k == m){
solve2();
return;
}
for (int i = 0; i < n; i++){
qan += b[k] = i;
solve1(k + 1);
qan -= i;
}
}
int main(){
cin >> n >> m;
for (int i = 0; i < n; i++){
for (int j = 0; j < m; j++){
cin >> a[i][j];
}
}
solve1();
if (mn == INT_MAX){
cout << 100500 << endl;
return 0;
}
cout << mn << endl;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |