hdu 2550 百步穿楊

百步穿楊

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3851    Accepted Submission(s): 1495


Problem Description
時維九月,序屬三秋,遼軍大舉進攻MCA山,戰場上兩軍正交鋒.遼軍統帥是名噪一時的耶律-James,而MCA方則是派出了傳統武將中草藥123.雙方經過協商,約定在十一月八日正午十分進行射箭對攻戰.中草藥123早早就開始準備,但是他是武將而不是鐵匠,造弓箭的活就交給聰明能幹的你了,現在告訴你每種弓箭規格,即箭身的長度,以及每種規格弓箭所需要的數目,要求你把需要的弓箭都輸出.
弓箭的基本樣子爲 ">+---+>",其中"+---+"爲箭身,數據保證箭身長度 > 2
 

Input
首先輸入一個t,表示有t組數據,跟着t行:
每行一個N (N < 50 ),接下去有N行,第i行兩個整數Ai , Bi,分別代表需要箭身長度爲Ai的弓箭Bi枝. (Ai < 30 , Bi < 10 )
輸入數據保證每一個Ai都是不同的.
 

Output
按照箭身的長度從小到大的順序依次輸出所有需要的弓箭,"每一種"弓箭後輸出一個空行.
 

Sample Input
1 4 3 4 4 5 5 6 6 7
 

Sample Output
>+-+> >+-+> >+-+> >+-+> >+--+> >+--+> >+--+> >+--+> >+--+> >+---+> >+---+> >+---+> >+---+> >+---+> >+---+> >+----+> >+----+> >+----+> >+----+> >+----+> >+----+> >+----+>
 
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;

struct sword {
    int length;
    int num;
} s[55];

bool cmp (sword a,sword b)
{
    return a.length < b.length;
}

void result(int n)
{
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<s[i].num;j++)
        {
            cout<<">+";
            for (int k=0;k<s[i].length-2;k++)
                cout<<"-";
            cout<<"+>";
            printf("\n");
        }
        printf("\n");
    }
}

int main() {
    int t;
    scanf("%d", &t);
    while (t--) {
        int n;
        scanf("%d", &n);
        for (int i = 0; i < n; i++) {
            scanf("%d%d", &s[i].length, &s[i].num);
        }
        sort(s,s+n,cmp);
        result(n);
    }
    return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章