QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#704759 | #6621. Luggage Lock | Yurily# | WA | 0ms | 3808kb | C++20 | 2.7kb | 2024-11-02 20:56:43 | 2024-11-02 20:56:44 |
Judging History
answer
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int N = 4;
char a[N + 3], b[N + 3];
int c[N + 3], t[N + 3];
int ans;
int dis(int c, int t){
if(t == 1)
if(c != 0)
return c;
else
return 10;
if(t == 2)
if(c != 0)
return 10 - c;
else
return 10;
return 20;
}
void dfs(int k, int sum){
if(k > N){
ans = min(ans, sum);
return ;
}
if(sum >= ans)
return ;
//1: 0->c[i]
// t[k] = 1;
// if(t[k - 1] == 1)
// if(c[k] != 0){
// if(c[k] > c[k - 1])
// dfs(k + 1, sum + c[k] - c[k - 1]);
// else
// dfs(k + 1, sum);
// }
// else {
// if(c[k - 1] != 0)
// dfs(k + 1, sum + 10 - c[k - 1]);
// else
// dfs(k + 1, sum);
// }
// else
// if(c[k] != 0)
// dfs(k + 1, sum + 10);
// else
// dfs(k + 1, sum + c[k]);
// if(t[k - 1] == 1)
// if(dis(c[k], 1) > dis(c[k - 1], 1))
// dfs(k + 1, sum + dis(c[k], 1) - dis(c[k - 1], 1));
// else
// dfs(k + 1, sum);
// else
// dfs(k + 1, sum + dis(c[k], 1));
//2: n-c[i]<-0
// t[k] = 2;
// if(t[k - 1] == 2)
// if(c[k] != 0){
// if(c[k] < c[k - 1])
// dfs(k + 1, sum + c[k - 1] - c[k]);
// else
// dfs(k + 1, sum);
// }
// else {
// if(c[k - 1] != 0)
// dfs(k + 1, sum + c[k - 1]);
// else
// dfs(k + 1, sum);
// }
// else
// if(c[k] != 0)
// dfs(k + 1, sum + 10 - c[k]);
// else
// dfs(k + 1, sum + 10);
for(int dir = 1; dir <= 2; dir++){
t[k] = dir;
if(t[k - 1] == t[k])
if(dis(c[k], dir) > dis(c[k - 1], dir))
dfs(k + 1, sum + dis(c[k], dir) - dis(c[k - 1], dir));
else
dfs(k + 1, sum);
else
dfs(k + 1, sum + dis(c[k], dir));
}
}
// void to10(int k){
// }
void sol(){
scanf("%c%c%c%c %c%c%c%c\n", &a[1], &a[2], &a[3], &a[4], &b[1], &b[2], &b[3], &b[4]);
for(int i = 1; i <= N; i++)
c[i] = (b[i] - a[i] + 10) % 10;
ans = 20;
t[0] = -1;
c[0] = -1;
dfs(1, 0);
// to10(1);
printf("%d\n", ans);
}
int main(){
int T;
scanf("%d\n", &T);
while(T--)
sol();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 3808kb
input:
6 1234 2345 1234 0123 1234 2267 1234 3401 1234 1344 1234 2468
output:
1 1 10 5 11 4
result:
wrong answer 3rd numbers differ - expected: '4', found: '10'