#38410: 請問錯在哪裡?


buanyz03 (張晁瑋)

學校 : 新北市立板橋高級中學
編號 : 2629
來源 : [114.25.190.198]
最後登入時間 :
2023-09-06 15:43:50
k517. P5.波動 (Wave) -- 2022年12月TOI新手同好會 | From: [203.69.87.1] | 發表日期 : 2023-11-20 09:46

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct wave
{
    int v,d;
    char dir;
};

int get_index(char ch)
{
    if(ch=='W')
    {
        return 0;
    }
    else if(ch=='S')
    {
        return 1;
    }
    else if(ch=='E')
    {
        return 2;
    }
    else if(ch=='N')
    {
        return 3;
    }
}

bool gt(wave a,wave b)
{
    long long ra,rb;
    ra=a.d*b.v;
    rb=b.d*a.v;

    if(ra!=rb)
    {
        return ra<rb;
    }
    return get_index(a.dir)<get_index(b.dir);
}

int main()
{
   int n,c;
   vector <wave> v;
   wave temp;
   while(cin>>n)
   {
       v.clear();
       while(n--)
       {
           cin>>temp.dir>>temp.d>>temp.v;
           v.push_back(temp);
       }
       sort(v.begin(),v.end(),gt);
       for(int i=0;i<v.size();++i)
       {
           cout<<v[i].dir;
       }
       cout<<endl;
   }
}
 
#38525: Re: 請問錯在哪裡?


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
k517. P5.波動 (Wave) -- 2022年12月TOI新手同好會 | From: [101.136.60.79] | 發表日期 : 2023-12-03 17:05

    long long ra,rb;
    ra=a.d*b.v;
    rb=b.d*a.v;


先轉long long再乘

 
ZeroJudge Forum