Submission #785097

#TimeUsernameProblemLanguageResultExecution timeMemory
785097QwertyPiMeetings (IOI18_meetings)C++14
0 / 100
1 ms212 KiB
#include "meetings.h"
#include <bits/stdc++.h>
#define INF (1 << 30)
#define INFL (1LL << 60)
#define fi first
#define se second
#define ll long long

using namespace std;
 
const int MAXN = 7.5e5 + 11;
long long fl[MAXN], fr[MAXN];

vector<int> H;

vector<long long> calc(int l, int r){
	vector<long long> res(r - l + 1);
	vector<pair<int, int>> F;
	long long cost = 0;
	F.push_back({l - 1, INF});
	for(int j = l; j <= r; j++){
		while(H[j] >= F.back().se) cost -= (long long) (F.back().fi - F[F.size() - 2].fi) * F.back().se, F.pop_back();
		F.push_back({j, H[j]}); cost += (long long) (F.back().fi - F[F.size() - 2].fi) * F.back().se;
		res[j - l] = cost;
	}
	return res;
}

std::vector<long long> minimum_costs(std::vector<int> H, std::vector<int> L,
                                     std::vector<int> R) {
    ::H = H;
  	int Q = L.size();
  	vector<ll> C(Q); 
    for(int i = 0; i < Q; i++){
    	int l = L[i], r = R[i];
    	cout << l << ' ' << r << endl;
    	vector<ll> a = calc(l, r);
    	reverse(::H.begin() + l, ::H.begin() + r + 1);
    	vector<ll> b = calc(l, r);
    	reverse(::H.begin() + l, ::H.begin() + r + 1);
    	reverse(b.begin(), b.end());
    	for(auto i : a) cout << i << ' '; cout << endl;
    	for(auto i : b) cout << i << ' '; cout << endl;
    	long long ans = INFL;
    	for(int i = 0; i <= r - l; i++){
    		ans = min(ans, a[i] + b[i] - H[l + i]);
		}
		C[i] = ans;
	}
  	return C;
}

Compilation message (stderr)

meetings.cpp: In function 'std::vector<long long int> minimum_costs(std::vector<int>, std::vector<int>, std::vector<int>)':
meetings.cpp:42:6: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   42 |      for(auto i : a) cout << i << ' '; cout << endl;
      |      ^~~
meetings.cpp:42:40: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   42 |      for(auto i : a) cout << i << ' '; cout << endl;
      |                                        ^~~~
meetings.cpp:43:6: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   43 |      for(auto i : b) cout << i << ' '; cout << endl;
      |      ^~~
meetings.cpp:43:40: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   43 |      for(auto i : b) cout << i << ' '; cout << 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...