P5661 [CSP-J2019] 公交换乘

#include<bits/stdc++.h>
using namespace std;
struct node{
    int p;
    int t;
    int g;
}a[100005];
int vis[100005];
int main(){
    int n,ans=0;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d %d %d",&a[i].g,&a[i].p,&a[i].t);
        if(a[i].g==0){
            ans+=a[i].p;
        //    cout<<"i= "<<i<<" p="<<a[i].p<<endl;
        }else {
            int flag=0;
            int st=max(0,i-45);
            for(int j=st;j<i;j++){
                if(a[j].t+45>=a[i].t&&a[j].g==0&&a[j].p>=a[i].p&&!vis[j]){
                    vis[j]=1;
                    flag=1;
                    break;
                }else {
                    
                }
            }
            if(!flag)ans+=a[i].p;
        }
    }
    printf("%d\n",ans);
}

上一篇:Excel学习日记:L3-冻结表格栏&分割视窗


下一篇:找出边界为1的最大子方阵