*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
#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; }