代码在一本通上AC,洛谷上提交全TLE。
#include<bits/stdc++.h>
using namespace std;
int n;//次数
int a[46][3],ji=0;//票价+时间
int i,j,k,l;//循环
int k1,k2,k3;
int much=0;//总价钱
int main()
{
//freopen("transfer.in","r",stdin);
//freopen("transfer.out","w",stdout);
cin>>n;
for(k=1;k<=n;k++)
{
cin>>k1;
if(k1==0)//地铁
{
cin>>k2>>k3;
much+=k2;
//cout<<"+"<<k2<<" "<<"票数:"<<ji<<endl;
ji++;
if(ji>45)
{
for(i=2;i<=ji;i++)
{
a[i][1]=a[i+1][1];
a[i][2]=a[i+1][2];
}
ji--;
}
a[ji][1]=k2;
a[ji][2]=k3;
}
if(k1==1)
{
cin>>k2>>k3;
int fl=0;
for(i=1;i<=ji;i++)
{
if(a[i][1]>=k2 && k3-a[i][2]<=45)
{
fl=1;
//cout<<"免票:"<<a[i][1]<<">="<<k2<<" && "<<k3<<"-"<<a[i][2]<<"<=45"<<endl;
for(j=i;j<=ji;j++)
{
a[j][1]=a[j+1][1];
a[j][2]=a[j+1][2];
}
break;
}
}
if(fl==0)
{
much+=k2;
/*
cout<<"缴费:";
cout<<"+"<<k2<<endl;
cout<<"剩余票:"<<endl;
for(i=1;i<=ji;i++)
{
cout<<i<<":"<<a[i][1]<<" "<<a[i][2]<<endl;
}
*/
}
}
}
cout<<much;
return 0;
}