*Byteきのこ採り
4316 ワード
1003:Byteきのこ採取Time Limit:1 Sec Memory Limit:128 MB 64 bit IO Format:%lld Submitted:704 Accepted:149[Submit][Status][Web Board]Description
元旦に家に帰って、Byteは親戚の家で1種のとてもおいしいキノコを食べて、川の堤防の辺の柳の木の上で生えていると言って、翌日Byteは自分でキノコを採って、キノコの乾いた鍋を作って昼食にすることにしました.柳はまっすぐな堤防のそばに整然と生えていて、どの柳にもキノコがいくつか生えています.Byteの開始座標をx=0,Byteの左座標値を負数,右座標値を正数とする.最初は左に行くか右に行くかを選択できますが、Byteが摘まれていない木に遭遇すると、Byteはまずすべてのキノコを外して、一つの方向に進んでいきます.つまり左に歩き始めると、座標x=-1で摘まれていない木に出会って、Byteはまずキノコを全部摘んで、右に行きます.Byteにキノコをどれだけ摘むことができるかを聞く.
Input
複数のテストデータ.
1行目に整数n(1<=n<=100)を入力すると、川沿いに合計何本の木があるかを表します(x=0に木がないことを保証します).後ろのn行の各行には2つの整数xiがあり、ai(
Output
出力Byteはキノコをどれだけ摘むことができますか.
Sample Input
3 -2 2 1 4 -1 3 3 1 9 3 5 7 10
Sample Output
9 9
元旦に家に帰って、Byteは親戚の家で1種のとてもおいしいキノコを食べて、川の堤防の辺の柳の木の上で生えていると言って、翌日Byteは自分でキノコを採って、キノコの乾いた鍋を作って昼食にすることにしました.柳はまっすぐな堤防のそばに整然と生えていて、どの柳にもキノコがいくつか生えています.Byteの開始座標をx=0,Byteの左座標値を負数,右座標値を正数とする.最初は左に行くか右に行くかを選択できますが、Byteが摘まれていない木に遭遇すると、Byteはまずすべてのキノコを外して、一つの方向に進んでいきます.つまり左に歩き始めると、座標x=-1で摘まれていない木に出会って、Byteはまずキノコを全部摘んで、右に行きます.Byteにキノコをどれだけ摘むことができるかを聞く.
Input
複数のテストデータ.
1行目に整数n(1<=n<=100)を入力すると、川沿いに合計何本の木があるかを表します(x=0に木がないことを保証します).後ろのn行の各行には2つの整数xiがあり、ai(
Output
出力Byteはキノコをどれだけ摘むことができますか.
Sample Input
3 -2 2 1 4 -1 3 3 1 9 3 5 7 10
Sample Output
9 9
#include
int main()
{
int n,i,j,x[104],a[104];
while(scanf("%d",&n)!=EOF)
{
for(i=0;iscanf("%d%d",&x[i],&a[i]);
for(i=0;i1;i++)//
for(j=0;j1-i;j++)
{
int temp;
if(x[j]>x[j+1])
{
temp=x[j];
x[j]=x[j+1];
x[j+1]=temp;
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
int c=0,b=0;
for(i=0;iif(x[i]<0)
c++;
else
b++;
}//
int s=0;
if(b==0)
s=a[n-1];
if(c==0)
s=a[0];//
if(c!=0&&b!=0)// ,
{
int t;
for(i=0;iif(x[i]<0&&x[i+1]>0)
{
t=i;
break;
}
if(cfor(i=t-c+1;i<=t+c+1;i++)
s+=a[i];
else if(c>b)
for(i=t-b;i<=t+b;i++)
s+=a[i];
else
for(i=t-c+1;i<=t+c;i++)
s+=a[i];
}
printf("%d
",s);
}
return 0;
}