Submission #1072571

#TimeUsernameProblemLanguageResultExecution timeMemory
1072571pawnedMeetings (IOI18_meetings)C++17
0 / 100
0 ms348 KiB
#pragma GCC optimize("O1,O2,O3,Ofast,unroll-loops") #include <bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back typedef long long ll; typedef pair<ll, ll> ii; typedef vector<ll> vi; #include "meetings.h" const int MAX = 750005; vi minimum_costs(vector<int> H_g, vector<int> L_g, vector<int> R_g) { int N = H_g.size(); vi H(N); for (int i = 0; i < N; i++) { H[i] = H_g[i]; } int Q = L_g.size(); vector<ii> queries; for (int i = 0; i < Q; i++) { queries.pb({L_g[i], R_g[i]}); } vector<vi> rm(N, vi(N, 0)); // range maximum on [i, j] for (int i = 0; i < N; i++) { for (int j = 0; j < i; j++) { rm[i][j] = rm[j][i]; } rm[i][i] = H[i]; for (int j = i + 1; j < N; j++) { rm[i][j] = max(rm[i][j - 1], H[j]); } } vector<vi> rms(N, vi(N + 1, 0)); for (int i = 0; i < N; i++) { for (int j = 1; j <= N; j++) { rms[i][j] = rms[i][j - 1] + rm[i][j - 1]; } } vi ans(Q); for (int i = 0; i < Q; i++) { int L = queries[i].fi; int R = queries[i].se; ll minimum = 1e18; for (int j = L; j <= R; j++) { // this is center ll total = rms[j][R + 1] - rms[j][L]; minimum = min(minimum, total); } // cout<<"ANSWER: "; cout<<minimum<<endl; } 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...