Bir tamsayı dizisi verildiğinde, dizinin bir alt dizisinin (ardışık konumlardaki tamsayılar) en büyük toplamını bulur. Sonraki dizi boş olabilir (bu durumda toplam 0'dır).
Giriş, her satır için bir tamsayı olan standart girişten okunur. En büyük toplam standart çıktıya yazılmalıdır.
Senin için küçük bir jeneratör yazdım:
#include <stdio.h>
#include <assert.h>
/* From http://en.wikipedia.org/wiki/Random_number_generation */
unsigned m_w;
unsigned m_z;
unsigned get_random()
{
m_z = 36969 * (m_z & 65535) + (m_z >> 16);
m_w = 18000 * (m_w & 65535) + (m_w >> 16);
return (m_z << 16) + m_w; /* 32-bit result */
}
int main(int argc, char **argv)
{
int i;
assert(argc == 3);
m_w = atoi(argv[1]);
m_z = atoi(argv[2]);
i = 10;
while (i--);
get_random();
i = atoi(argv[2]);
while (i--)
printf("%d\n", (int) get_random() << 8 >> 22);
return 0;
}
Örnekler:
$ printf "1\n2\n-1\n4\n" | ./sum
6
$ printf "0\n-2\n-3\n" | ./sum
0
$ ./a.out 1 1 | ./sum
387
$ ./a.out 1 10 | ./sum
571
$ ./a.out 1 100 | ./sum
5867
$ ./a.out 1 1000 | ./sum
7531
$ ./a.out 1 10000 | ./sum
27268
$ ./a.out 1 100000 | ./sum
101332
$ ./a.out 1 1000000 | ./sum
187480
$ ./a.out 1 10000000 | ./sum
666307
./sum
benim çözümüm./a.out
jeneratör
Çözümünüz yukarıdaki tüm testler için makul sürede çalışmalıdır (benimki son test durumunda 1.2 saniye içinde çalışır).
En kısa kod kazanır.
Düzenleme : Lütfen yukarıdaki testlerden birinde bir örnek çalıştırma sağlayın.
while (i--);
noktalı virgülle bitmemeli, değil mi?
#include <stdlib.h>
içinatoi()
.