#include // Kuba Pelc using namespace std; // Funkce, která spočítá rozdíl dvou úhlů ve stupních int Diff(int a, int b) { // Nejdříve zajistíme, aby "a" i "b" bylo v rozsahu 0..359 a = a % 360; b = b % 360; // Pro jednoduchost chceme, aby vždy platilo, že a <= b // Pokud a > b, tak a prohodíme s b if(a > b) { int temp = a; a = b; b = temp; } // Spočítáme rozdíl úhlů // Můžeme si úhly a,b představit jako ručičky hodin // Nejdříve spočítáme jejich úhlovou vzdálenost, když bychom se pohybovali po směru hodin od "a" int d1 = b - a; // Poté také proti směru hodin int d2 = 360 + a - b; // A vrátíme tu kratší úhlovou vzdálenost if(d1 < d2) return d1; return d2; } int main() { // Nejdříve načteme počet úhlů na vstupu int count; cin >> count; // Budeme si udržovat součet rozdílů úhlů mezi sousedními knihami (pro jistotu v 64 bitovém unsigned intu) uint64_t sum = 0; // Také si budeme udržovat hodnotu posledního zpracovaného úhlu... int last; // ...kterou inicializujeme hodnotou prvního úhlu na vstupu cin >> last; // Nyní zpracujeme zbylých count - 1 úhlů for(int i = 0; i < count - 1; i++) { // Načteme ze vstupu další úhel int current; cin >> current; // Přičteme rozdíl posledního úhlu od aktuálního k celkovému součtu sum += Diff(last, current); // A do proměnné pro poslední úhel uložíme aktuální last = current; } // Nakonec celkový součet rozdílů vypíšeme cout << sum; return 0; }