Submission #1074342

#TimeUsernameProblemLanguageResultExecution timeMemory
1074342cpdreamerClosing Time (IOI23_closing)C++17
9 / 100
1072 ms10068 KiB
#include "closing.h"
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <utility>

#define F first
#define S second
#define P pair
#define pb push_back
#define all(v) v.begin(),v.end()
typedef long long ll;
using namespace __gnu_pbds;
using namespace std;
int max_score(int N, int X, int Y, long long K,
              std::vector<int> U, std::vector<int> V, std::vector<int> W)
{
    ll closing[N];
    memset(closing,0,sizeof(closing));
    int ans=0;
    for(int i=X;i<N;i++){
        for(int j=X;j>=0;j--){
            for(int a=Y;a<N;a++){
                ll sum=0;
                ll k=K;
                memset(closing,0,sizeof(closing));
                for(int g=X;g<i;g++) {
                    sum += W[g];
                    closing[g + 1] =max(closing[g+1],sum);
                }
                sum=0;
                for(int g=Y;g<a;g++){
                    sum+=W[g];
                    closing[g + 1] =max(closing[g+1],sum);
                }
                sum=0;
                for(int g=X-1;g>=j;g--) {
                    sum += W[g];
                    closing[g] = max(closing[g], sum);
                }
                for(int g=0;g<N;g++){
                    k-=closing[g];
                }
                if(k>=0){
                    int c=X-j+i-X+a-Y;
                    sum=0;
                    for(int g=Y-1;g>=0;g--){
                        sum+=W[g];
                        k+=closing[g];
                        closing[g]=max(closing[g],sum);
                        k-=closing[g];
                        if(k>=0)
                            c++;
                        else
                            break;
                    }
                    ans=max(ans,c+2);
                }
            }
        }
    }
    return ans;
}
#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...