Trochę słabo pamiętam to zadanie, i średnio rozumiem już swój kod, ale jedna z rzeczy którą robię inaczej to zamiast dzielenia przez N (to jest dzielenie całkowitoliczbowe, więc będziesz miał poucinane wartości) po prostu mnożę przez N wartość, którą trzeba przekroczyć, żeby była średnia >4. Nie wiem też czemu dodajesz jakieś modulo, ja w swoim kodzie nie mam nic takiego.
Jak to poprawisz, to pewnie będzie TLE. Wskazówka: czy zawsze musisz przechodzić przez cały proces dodawania kolejnych potęg liczb, czy może w pewnych przypadkach można stwierdzić od razu, że wymagane k nie istnieje lub wynosi 1? Ja osobiście również, zamiast szybkiego potęgowania, po prostu za każdym obiegiem pętli mnożyłem każdą ocenę przez jej początkową wartość (ale nie wiem, czy tak jest szybciej). Poza tym oprócz ios::sync_with_stdio(0)
(ja swoją drogą używam ios_base::sync_with_stdio(false)
, nie wiem, czy jest jakaś różnica) jest jeszcze jeden przyspieszacz, a mianowicie cin.tie(nullptr);
. Domyślnie po każdym wczytaniu danej jest wypisywany cały bufor strumienia cout, co bardzo spowalnia program. Po dodaniu tej linijki wszystko zostanie wypisane dopiero na koniec programu, ale dla sprawdzarki to bez znaczenia, a program będzie działał szybciej. PS: i staraj się unikać niepotrzebnego używania endl
, gdyż ono też wypisuje cały bufor (zamiast tego polecam '\n'
).
Jak to poprawisz, to mi wyskakuje jakiś dziwny błąd SIGQUIT (siedzę na spoju z przerwami od 5 lat i PIERWSZY raz widzę ten błąd). Nie wiem jak to naprawić ani co może to powodować, sorry. Może ktoś techniczny się wypowie. W ostateczności prześlę Ci swój kod na PW, bo jak poprawisz to powyższe to zadanie na 99% zaliczone i AC jest kwestią formalności oraz wkurzającego błędu.
Znalazłem rozwiązanie!
Problemem jest najwyraźniej twój #define ULL unsigned long long
, należy go zastąpić przez typedef unsigned long long ULL
(typedef sprawia, że kompilator uważa drugi podany typ za alias pierwszego). Aha, no i zmieniłem ten include na zwykłe <iostream>
, ale nie wiem, czy to miało jakiś udział w tym błędzie.
A, no i nie wydaje mi się, żebyś przekraczał zakres. To raczej kombinacja tych problemów powyżej.