Comentário OBI 2024 Terceira Fase – Problema “Cadeado” (PJ)

por

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:


#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';
}

view raw

Cadeado.cpp

hosted with ❤ by GitHub