私はspojの問題をやっていますが、それをやろうとしましたが、常にTLE(期限が切れています)を取得しています。質問はホテルです。これは私のコードです。最適化する方法を教えてください。
#include<stdio.h>
int main()
{
unsigned long long int a,b,i;
scanf("%llu %llu",&a,&b);
unsigned long long int arr[a];
for(i=0;i<a;i++)
{
scanf("%llu",&arr[i]);
}
unsigned long long int d;
unsigned long long int k,z=0;
for(i=0;i<a;i++)
{
d = arr[i];
for(k=i+1;k<a+1;k++)
{
if (d<b)
{
if(z<d)
z = d;
}
else
if(d==b)
{
z = d;
break;
}
else
break;
d = d + arr[k];
}
if(d==b)
break;
}
printf("%llu",z);
return 0;
}
このように、入力5 12の場合、これらの5つは2 1 3 4 5で12になり、次のようになります。最初に12を2と比較し、次に2 + 1、次に2 + 1+3というように続けます。 5 12対1、1 + 3、1 + 3 + 4 ..を比較します。このように、私は連続してのみ取得し、12に等しい場合は中断し、それ以外の場合は最後まで続きます。
Hitesh