# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
519831 |
2022-01-27T11:31:15 Z |
AdamGS |
Holiday (IOI14_holiday) |
C++17 |
|
1167 ms |
37300 KB |
#include "holiday.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define rep(a, b) for(int a = 0; a < (b); ++a)
#define st first
#define nd second
#define pb push_back
#define all(a) a.begin(), a.end()
const int LIM=4e5+7;
int ile[4*LIM], N;
pair<ll,ll>T[4*LIM], P[4*LIM];
ll sum[4*LIM], ans[4*LIM];
void upd1(int v, int x) {
v+=N;
while(v) {
ile[v]+=x;
v/=2;
}
}
int znajdz(int k) {
int v=1;
while(v<N) {
v*=2;
if(ile[v]<k) {
k-=ile[v];
++v;
}
}
return v-N;
}
void upd2(int v, ll x) {
v+=N;
while(v) {
sum[v]+=x;
v/=2;
}
}
ll cnt(int l, int r) {
l+=N; r+=N;
ll x=sum[l];
if(l!=r) x+=sum[r];
while(l/2!=r/2) {
if(l%2==0) x+=sum[l+1];
if(r%2==1) x+=sum[r-1];
l/=2; r/=2;
}
return x;
}
void dc(int l, int r, int a, int b, int n) {
if(b<a) return;
int mid=(a+b)/2;
ll ma=0, gdzie=l;
for(int i=l; i<=r; ++i) {
if(i<n) {
upd1(T[i].nd, 1);
upd2(T[i].nd, T[i].st);
}
if(mid==i && ma==0) {
ma=0;
gdzie=i;
}
if(0<mid-i && mid-i<=i+1) {
ll p=cnt(0, znajdz(mid-i));
if(p>ma) {
ma=p;
gdzie=i;
}
}
}
for(int i=r; i>=gdzie; --i) {
if(i<n) {
upd1(T[i].nd, -1);
upd2(T[i].nd, -T[i].st);
}
}
dc(gdzie, r, mid+1, b, n);
for(int i=gdzie-1; i>=l; --i) {
if(i<n) {
upd1(T[i].nd, -1);
upd2(T[i].nd, -T[i].st);
}
}
dc(l, gdzie, a, mid-1, n);
ans[mid]=ma;
}
vector<ll>licz(vector<ll>V) {
int n=V.size();
N=1;
while(N<2*n) N*=2;
rep(i, 2*N) ile[i]=ans[i]=sum[i]=0;
rep(i, n) P[i]={V[i], i};
sort(P, P+n);
reverse(P, P+n);
rep(i, n) T[P[i].nd]={P[i].st, i};
dc(0, n-1, 0, 2*n-1, n);
vector<ll>W;
rep(i, 2*n) W.pb(ans[i]);
return W;
}
ll findMaxAttraction(int n, int start, int d, int attraction[]) {
vector<ll>V, A1, A2, B1, B2;
for(int i=start; i<n; ++i) V.pb(attraction[i]);
A1=licz(V);
V.clear();
for(int i=start; i<n; ++i) {
V.pb(attraction[i]);
V.pb(0);
}
A2=licz(V);
V.clear();
V.pb(0);
for(int i=start-1; i>=0; --i) V.pb(attraction[i]);
B1=licz(V);
V.clear();
V.pb(0);
for(int i=start-1; i>=0; --i) {
V.pb(0);
V.pb(attraction[i]);
}
B2=licz(V);
ll ma=0;
rep(i, min(int(A1.size()), d+1)) {
ma=max(ma, A1[i]+B2[min(d-i, int(B2.size()-1))]);
}
rep(i, min(int(A2.size()), d+1)) {
ma=max(ma, A2[i]+B1[min(d-i, int(B1.size()-1))]);
}
return ma;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
716 KB |
Output is correct |
2 |
Correct |
1 ms |
716 KB |
Output is correct |
3 |
Correct |
1 ms |
716 KB |
Output is correct |
4 |
Correct |
1 ms |
716 KB |
Output is correct |
5 |
Correct |
1 ms |
716 KB |
Output is correct |
6 |
Correct |
1 ms |
716 KB |
Output is correct |
7 |
Correct |
1 ms |
716 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1127 ms |
36424 KB |
Output is correct |
2 |
Correct |
893 ms |
36616 KB |
Output is correct |
3 |
Correct |
1043 ms |
36724 KB |
Output is correct |
4 |
Correct |
924 ms |
36732 KB |
Output is correct |
5 |
Correct |
1086 ms |
35776 KB |
Output is correct |
6 |
Correct |
275 ms |
10212 KB |
Output is correct |
7 |
Correct |
588 ms |
18912 KB |
Output is correct |
8 |
Correct |
688 ms |
20204 KB |
Output is correct |
9 |
Correct |
186 ms |
9252 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
21 ms |
1904 KB |
Output is correct |
2 |
Correct |
20 ms |
1868 KB |
Output is correct |
3 |
Correct |
20 ms |
1904 KB |
Output is correct |
4 |
Correct |
17 ms |
1740 KB |
Output is correct |
5 |
Correct |
15 ms |
1416 KB |
Output is correct |
6 |
Correct |
5 ms |
972 KB |
Output is correct |
7 |
Correct |
5 ms |
972 KB |
Output is correct |
8 |
Correct |
5 ms |
1000 KB |
Output is correct |
9 |
Correct |
5 ms |
972 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1092 ms |
36424 KB |
Output is correct |
2 |
Correct |
1155 ms |
37300 KB |
Output is correct |
3 |
Correct |
438 ms |
11460 KB |
Output is correct |
4 |
Correct |
16 ms |
1328 KB |
Output is correct |
5 |
Correct |
5 ms |
972 KB |
Output is correct |
6 |
Correct |
5 ms |
972 KB |
Output is correct |
7 |
Correct |
6 ms |
940 KB |
Output is correct |
8 |
Correct |
1144 ms |
23368 KB |
Output is correct |
9 |
Correct |
1167 ms |
23456 KB |
Output is correct |