제출 #1310723

#제출 시각아이디문제언어결과실행 시간메모리
1310723cansu_mutluUplifting Excursion (BOI22_vault)C++20
0 / 100
2 ms580 KiB
#include<bits/stdc++.h>
#define int long long 
using namespace std;
int32_t main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int m,l;
    cin >> m>> l;
    vector<int> a(m+1);
    int sifir = 0;
    int sum = 0;
    vector<int> eksi(m+1);
    for(int i=m;i>=1;i--) cin >> eksi[i];
    cin >> sifir;
    for(int i=1;i<=m;i++) 
    {
        cin >> a[i];
        
    }
    int cur = 0,cnt=0;
    vector<int> var(m+1,0);
    for(int i=1;i<=m;i++)
    {
        int num = a[i]*i;
        if(num+cur<=l+m)
        {
            cur+=num;
            cnt+=a[i];
            var[i] = a[i];
            a[i] = 0;
        }
        else
        {
            int istek = l+m-cur;
            istek/=i;
            cur+= i*istek;
            cnt+=istek;
            var[i] = istek;
            a[i]-=istek;
        }
    }
    if(cur<l-m)
    {
        cout << "impossible" << endl;
        return 0;
    }
    cur-=l;
    cur+=m*m;
    //cout << cur << " "<< cnt << endl;
    vector<int> dp(2*m*m+1,0);
    dp[cur] = cnt;
    for(int i=1;i<=m;i++)
    {
        //cout << i << endl;
        for(int num = 1;num<=min(m,var[i]);num++)
        {
            for(int cur = 0;cur<=2*m*m-i;cur++)
            {
                if(dp[cur+i]!=0)
                {
                    dp[cur] = max(dp[cur],dp[cur+i]-1);
                }
            }
        }
        for(int num=1;num<=min(m,a[i]);num++)
        {
            for(int cur = 2*m*m;cur>=i;cur--)
            {
                if(dp[cur-i]!=0)
                {
                    dp[cur] = max(dp[cur],dp[cur-i]+1);
                }
            }
        }
    }
    if(l!=0 && dp[m*m]==0)
    {
        cout << "impossible" << endl;
    }
    else cout << sifir+dp[m*m] << endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...