交大oj-1009-二哥炒株C++まとめ

4639 ワード

二番目の兄が株を売る
この問題には何の落とし穴も設けられていないので,問題の意味がはっきりしているので,直接コードを述べる必要はない.
#include 
#include 
#include 
using namespace std;

struct Trade {
    int time;
    int stock;
    int mode;
    Trade(int time, int stock, int mode) :time(time), stock(stock), mode(mode) {};
};

struct StockPrice {
    int time;
    int price;
    StockPrice(int time, int price) :time(time), price(price) {};
};

vector trade;
vector price;
int tradeNum, priceNum;

int getPrice(int time)
{
    static int index = 0;
    for (; index < priceNum; index++) {
        if (price[index].time > time)
            break;
    }
    return price[index - 1].price;
}

int main()
{
    int i, t, a, d;
    cin >> tradeNum;
    for (i = 0; i < tradeNum; i++) {
        cin >> t >> a >> d;
        trade.push_back(Trade(t, a, d));
    }
    cin >> priceNum;
    for (i = 0; i < priceNum; i++) {
        cin >> t >> a;
        price.push_back(StockPrice(t, a));
    }
    //cin has ended
    double profit = 0;
    int trademoney;
    for (i = 0; i < tradeNum; i++) {
        trademoney = getPrice(trade[i].time) * trade[i].stock;
        if (trade[i].mode == 1) {   // buy
            profit -= (0.2 * trademoney > 5) ? (0.2 * trademoney) : 5;
            profit = profit - 0.1 * trade[i].stock - 1 - trademoney * 100;
        }
        else {  //sell
            profit -= (0.2 * trademoney > 5) ? (0.2 * trademoney) : 5;
            profit = profit - 0.1 * trade[i].stock - 1 + trademoney * 99.9;
        }
    }
    cout << fixed << setprecision(2) << profit << endl;

    return 0;
}

//                 ,         ,              ,         ,       
//              ,  struct      

まとめ~
この問題の重点はどのように取引記録と株価の変化記録を保存するかで、私は最もpairを使用し始めたばかりで、明らかにstructが便利で使いやすいわけではありません.この解法はあまりよくなく,評価状態には10 ms以下のコードがあり,取引記録を遍歴した後に収益を一緒に処理する問題であり,取引量を減らすと推測される.あまり変えたくないですが、もう改善の考えがあります.go on for next problem~