1 solutions

  • 0
    @ 2025-11-5 18:05:29

    C++ :

    #include<bits/stdc++.h>
    #define C c=getchar()
    using namespace std;
    int i,j,k,n,m,tot,ans,t;
    int f[1005],h[105],v[105];
    int read(){
        char c;int x;while(C,c<'0'||c>'9');x=c-'0';
        while(C,c>='0'&&c<='9') x=x*10+c-'0';return x;
    }
    int maxn(int a,int b){return a>b?a:b;}
    int minn(int a,int b){return a<b?a:b;}
    int main()
    {
        //freopen("cheese.in","r",stdin);freopen("cheese.out","w",stdout);
        n=read();t=read();k=read();
        for(int i=1;i<=n;i++){
            v[i]=read(); h[i]=read();
        }
        for(int i=1;i<=n;i++)
         if(h[i]<k) for(int j=h[i];j<=t;j++) f[j]=maxn(f[j],f[j-h[i]]+v[i]);
        for(int i=0;i<=t;i++) ans=maxn(ans,f[i]);
        for(int i=1;i<=n;i++)
         for(int j=h[i]*4/5;j<=t;j++) 
            f[j]=maxn(f[j],f[j-h[i]*4/5]+v[i]);
        for(int i=1;i<=n;i++)
         if(h[i]>=k) for(int j=h[i];j<=t;j++) ans=maxn(ans,f[j-h[i]]+v[i]);
        printf("%d",ans);
        return 0;
    }
    
    • 1

    Information

    ID
    18775
    Time
    1000ms
    Memory
    64MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By