無題
Posted: 2010年8月18日(水) 21:26
与えられた数列の内いくつかの数が連続した和の最大値を求めるprogramを書け。という問題です。
http://rose.u-aizu.ac.jp/onlinejudge/Pr ... 22&lang=jp
#include<cstdio>
using namespace std;
int main(){
while(1){
long long int n;
scanf("%lld",&n);
if(n == 0){
break;
}
long long int wa[10001]={0};
for(long long int loop=1;loop<=n;loop++){
long long int aa;
scanf("%lld",&aa);
wa[loop] = wa[loop-1] + aa;
}
long long int max=-3333333;
int flag=0;
for(long long int loop=1;loop<=n;loop++){
for(long long int fir=1;fir<=n-loop+1;fir++){
long long int ret=wa[fir+loop-1]-wa[fir-1];
if(ret > max || flag==0){
max=ret;
flag=1;
}
}
}
if(max!=0){
printf("%lld\n",max);
}
}
}
このようなprogramを組んだのですが、Wrong Answerとなってしまいます。何がダメなのでしょうか。Wrong Answerとなる理由が分からず、全てlong longにしてみたのですが…
http://rose.u-aizu.ac.jp/onlinejudge/Pr ... 22&lang=jp
#include<cstdio>
using namespace std;
int main(){
while(1){
long long int n;
scanf("%lld",&n);
if(n == 0){
break;
}
long long int wa[10001]={0};
for(long long int loop=1;loop<=n;loop++){
long long int aa;
scanf("%lld",&aa);
wa[loop] = wa[loop-1] + aa;
}
long long int max=-3333333;
int flag=0;
for(long long int loop=1;loop<=n;loop++){
for(long long int fir=1;fir<=n-loop+1;fir++){
long long int ret=wa[fir+loop-1]-wa[fir-1];
if(ret > max || flag==0){
max=ret;
flag=1;
}
}
}
if(max!=0){
printf("%lld\n",max);
}
}
}
このようなprogramを組んだのですが、Wrong Answerとなってしまいます。何がダメなのでしょうか。Wrong Answerとなる理由が分からず、全てlong longにしてみたのですが…