PAT 1016 未通过,段错误

来源:互联网 发布:电脑不能从网络启动 编辑:程序博客网 时间:2024/06/06 02:41
#include<iostream>
#include<map>
#include<iomanip>
#include<string>
#include<string.h>
#include<algorithm>
using namespace std;
float sum;
int charge[25];
struct ZZ {
   int cnt;
   struct ZZZ{
     string time;
     int tag;
     bool operator < (const ZZZ &A) const{
         return time<A.time;
     }
   }node[1001];
   string name;
   void zxc()
    {
        sort(node,node+cnt);
    }
   bool operator < (const ZZ &B  ) const
    {
         return name<B.name;
    }
}tutu[1001];
 void js(string a,string b)
   {
        float tsum=0;
       int cnt=0;
       a.erase(0,3);
       b.erase(0,3);
       cout<<a<<' '<<b<<' ';
        while(a!=b)
        {
            int x=(a[3]-'0')*10+a[4]-'0';
              tsum+=charge[x];
              cnt++;
            a[7]++;
            if(a[7]>'9') {a[7]='0';a[6]++;}
            if(a[6]>'5') {a[6]='0';a[4]++;}
            if(a[4]>'9') {a[4]='0';a[3]++;}
            if(a[3]=='2'&&a[4]>'3')
            {
                a[3]=a[4]='0';a[1]++;
            }
            if(a[1]>'9') {a[0]++;a[1]='0';}
        }
           tsum/=100;
           sum+=tsum;
           cout<<cnt<<" $"<<fixed<<setprecision(2)<<tsum<<endl;
   }
int main()
{
    for(int i=0;i<24;i++)
      cin>>charge[i];
    int n;
    string a,b,c;
    int p=0;
    cin>>n;
    map<string,int> M;
    M.clear();
    for(int i=0;i<=500;i++)
        tutu[i].cnt=0;
    for(int i=0;i<n;i++)
    {   int tmp;
        cin>>a>>b>>c;
         if(M.find(a)==M.end()) {
                M[a]=p++;
              tmp=p-1; }
         else tmp=M[a];
         int y;
         tutu[tmp].name=a;
         int x=tutu[tmp].cnt;
         tutu[tmp].node[x].time=b;
          if(c[1]=='f') y=2;
           else y=1;
           tutu[tmp].node[x].tag=y;
           tutu[tmp].cnt++;
    }
       sort(tutu,tutu+p);
        for(int i=0;i<p;i++)
        { 
            sum=0;
            tutu[i].zxc();
            int tflag=0;
         for(int j=0;j<tutu[i].cnt;j++)
           {
                if(tutu[i].node[j].tag==2)
                  {    if(tflag==0) cout<<tutu[i].name<<' '<<b[0]<<b[1]<<endl;
                       tflag=1;
                      js(tutu[i].node[j-1].time,tutu[i].node[j].time);
                  }
           }
              cout<<"Total amount: $"<<fixed<<setprecision(2)<<sum<<endl;
       }
 return 0;
}
原创粉丝点击