AD 1. Jeżeli nie widzisz różnicy, między swoimi poszczególnymi wklejeniami, to.... to może to ja jestem ślepy?.
AD 2. Możliwe, że coś z moim wzrokiem jest faktycznie nie tak, bo czasami nie dostrzegam różnicy, tam gdzie Ty ją wyraźnie widzisz [między long i int], ale w takim razie może nic nie słyszałeś o jeszcze jednym typie: long long int? Może google: "różnica między long i long long c++" lub jakoś podobnie sformułowane pytanie?
Chciałem, abyś znalazł w goglach, bo może byłoby to lepiej objaśnione. Moje szczątkowe wyjaśnienie: http://discuss.spoj.com/t/833-dwumiany/10085/3
PS
Oczywiście nie masz za co przepraszać no i twój system jest pewnie [mój tak] 64 bitowy?
Rozwiązałem już kilkanaście zadań na Spoj i to jest pierwsze które sprawia mi kłopot.Nie jestem już pewien czy je dobrze zrozumiałem.Rozwiązałem je na 2 sposoby i cały czas otrzymuję "błędną odpowiedź".
#include <iostream>
using namespace std;
int main() {
int n;
int t[100000];
long long suma=0;
long long max=0;
int miasto=0;
cin>>n;
for(int i = 0; i < n ; i++) {
cin>>t[i];
suma+=t[i];
}
max=suma;
for(int i = 0; i<n ; i++) {
suma-=t[i];
if(suma>max) {
max=suma;
miasto=i;
}
}
suma=max;
for(int i = n-1; i>=miasto ; i--){
suma-=t[i];
if(suma>max)
max=suma;
}
cout<<max<<endl;
return 0;
}
Drugie rozwiązanie:
Oba rozwiązują wszystkie testy jakie udało mi się zdobyć i wymyśleć
A sprawdziłeś kod dla testów z komentarzy ? :
in: 1000 -800 999 -800
out: 1199
in: 105 -150 108 -50
out: 108
in: 101 5 -150 5 100 -50 3
out: 106
in: 2 -1 2 -1 2 -1 2
out: 5
in: 100 5 -150 5 100 3 -4
out: 108
in: 100 -3000 -5000 -3000 -9000 100 -200 -10000
out: 100
in: 100 5 -105 4 100 -1 -1 -1 -112 130
out: 130
Zadanie rozwiązane.Zadziałało drugie rozwiązanie.Wystarczyło skasować jedno else... Test który pokazał błąd to:
in: -1 -2 5 -10 -20
out: 5
Nadal nie wiem dlaczego to pierwsze rozwiązanie nie chce działać.Mam jeszcze jedną uwagę.Limit czasu jest bardzo mały gdy korzysta się z cin>>.
(program wykonywał się przez 0.1s a limit to 0.117s .) Dlatego lepiej zastosować scanf.
Podrzućcie jeszcze kilka zestawów testowych ponieważ te które są podane program przechodzi pozytywnie i nie ma problemu z dużymi liczbami.
Ciągle mam błędną odpowiedź, kodu nie wrzucam ponieważ moim zdaniem jest prawidłowy.
Wyniki mam poprzez początkowo usunięciu ujemnych liczb z obu końców tablicy, pogrupowaniu najdłuższych ciągów liczb o tym samym znaku, następnie wyszukaniu największego sąsiedztwa liczby ujemnej, zsumowaniu dodatnich liczb w najdłuższym ciągu a następnie odjęcie ujemnych które były po drodze.
Dla przykładów mam prawidłowe wyniki.
Czy jest kto w stanie powiedzieć co jest nie tak z kodem?
Wszystkie testy są poprawne ale przekroczony limit czasu. Jak można zmniejszyć ilość wymaganej pamięci (zaraz wynosi ona 16M!!). Z góry Dziękuję...
http://ideone.com/JY31qr32
Stefan, co robię źlę?
Ja nie Stefan, a chociażby, co oznacza, każdy, powinien wiedzieć. W kodzie jest dużo więcej złych rzeczy.
Chociażby niepotrzebne i nieumiejętne używanie zmiennych globalnych, chociaż, akurat to nie ma wpływu na sędziego, tylko na pewnego bad guy’a Jak czysto pisać w C++
dziękuje za rady co do kodu, ale to chyba nie jego estetyka wpływa na brak AC, najlepiej prosiłbym o podanie jakiegoś testu, którego program nie wykonuje, sam takiego nie umiem znaleźć niestety
zmieniłem warunki w tym miejscu
for (int x=0; x<temp-2 && temp!=1; x+=2){
if(sumy[x]+sumy[x+1]+sumy[x+2]>=max(sumy[x], sumy[x+2])) {