Submission #1201357

#TimeUsernameProblemLanguageResultExecution timeMemory
1201357PagodePaivaClosing Time (IOI23_closing)C++20
9 / 100
1093 ms5188 KiB
#include "closing.h"
#include<bits/stdc++.h>

using namespace std;
const long long N = 3010;

vector <pair <long long, long long>> g[N];
long long v[N];
long long custo[N];
long long pref[N], pref2[N];

int max_score(int n, int X, int Y, long long k,
              std::vector<int> U, std::vector<int> V, std::vector<int> W){
    for(int i = 0;i < n;i++){
        g[i].clear();
        v[i] = 0;
        custo[i] = 0;
        pref[i] = pref2[i] = 0;
    }
    for(int i = 0;i < n-1;i++){
        g[U[i]].push_back({V[i], W[i]});
        g[V[i]].push_back({U[i], W[i]});
        v[i] = W[i];
    }
     for(int i = X-1;i >= 0;i--){
        pref[i] = pref[i+1] + v[i];
    }
    for(int i = X+1;i < n;i++){
        pref[i] = pref[i-1] + v[i-1]; 
    }
    for(int i = Y-1;i >= 0;i--){
        pref2[i] = pref2[i+1] + v[i];
    }
    for(int i = Y+1;i < n;i++){
        pref2[i] = pref2[i-1] + v[i-1]; 
    }
    int ans = 0;
    for(int l1 = 0;l1 <= X;l1++){
        for(int r1 = X;r1 < n;r1++){
            long long gasto = 0;
            for(int j = l1;j <= r1;j++){
                gasto += pref[j]; 
            }
            for(int i = 0;i <= l1-1;i++)
                custo[i] = pref2[i];
            for(int i = l1;i <= r1;i++){
                custo[i] = max(pref[i], pref2[i]) - pref[i];
            }
            for(int i = r1+1;i < n;i++){
                custo[i] = pref2[i];
            }
            for(int l2 = 0;l2 <= Y;l2++){
                for(int r2 = Y;r2 < n;r2++){
                    long long gasto2 = gasto;
                    for(int i = l2;i <= r2;i++){
                        gasto2 += custo[i];
                    } 
                    if(gasto2 <= k){
                        ans = max(ans, r1-l1+1+r2-l2+1);
                    }
                }
            }
        }
    }
    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...