Co robisz źle, Stefan?
1. Źle wklejasz kod, w tej chwili pewnie mało komu będzie się chciało go czytać.
2. Żle, bo podejrzewam, że nie wiesz jaka jest róznica, między, int, long int i long long [int]
..
Dalej nie przeglądałem twojego kodu [patrz pkt 1.]
PS
A jednak znalazł się ktoś
PS 3
Tytuł postu, Stefan, nie jest zgodny, z przyjętym standartem. Sorry, jeżeli nieprawidłowo odgadłem twoje drugie imię, Stefan [Malchior]
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