Comentário por Henrique Vianna
Conhecimento prévio necessário:
Perceba que cada um dos discos do cadeado é independente dos outros. Isso quer dizer que para minimizar o total de cliques, basta minimizar a quantidade de cliques para cada um dos discos. Para cada disco há duas opções: girá-lo no sentido horário ou anti-horário (até que se chegue no dígito desejado). Então, para cada um dos deles, deve-se calcular o número de cliques para cada sentido e escolher o menor.
Segue o código:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <bits/stdc++.h> | |
| using namespace std; | |
| int main() | |
| { | |
| ios_base::sync_with_stdio(false); | |
| cin.tie(NULL); | |
| int n; cin >> n; | |
| int resp = 0; | |
| for(int i = 1; i <= n; i++) | |
| { | |
| int c, s; cin >> c >> s; | |
| int horario = (c > s ? c – s : s – c); | |
| int antihorario = (c > s ? 10 + s – c : 10 + c – s); | |
| resp += min(horario, antihorario); | |
| } | |
| cout << resp << '\n'; | |
| } |
