# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
14795 |
2015-06-24T08:07:36 Z |
ainta |
Holiday (IOI14_holiday) |
C++ |
|
154 ms |
6636 KB |
#include"holiday.h"
#include<stdio.h>
#include<algorithm>
#define SZ 131082
using namespace std;
struct A{
int a, num;
bool operator<(const A &p)const{
return a<p.a;
}
}w[101000];
int P, D, Num[101000];
long long Res;
struct IdxTree{
long long S;
int C;
}IT[SZ+SZ];
void UDT(int a){
while(a!=1){
a>>=1;
IT[a].S=IT[a+a].S+IT[a+a+1].S;
IT[a].C=IT[a+a].C+IT[a+a+1].C;
}
}
void On(int a){
a=Num[a];
IT[SZ+a].S=w[a].a,IT[SZ+a].C=1;
UDT(SZ+a);
}
void Off(int a){
a=Num[a];
IT[SZ+a].S=0,IT[SZ+a].C=0;
UDT(SZ+a);
}
long long Gap(int t){
long long S=0;
int nd = 1;
while(nd<SZ){
nd=nd+nd+1;
if(IT[nd].C<=t){
t-=IT[nd].C;
S+=IT[nd].S;
nd--;
}
}
return S;
}
void Do1(int b, int e, int s, int l){
if(b>e)return;
int m = (b+e)>>1, i, x;
long long M=0,S;
for(i=m;i<=e;i++)On(i);
for(i=s;i<=l;i++){
On(i);
S = Gap(D-(P-m)-(i-m));
if(M<S)M=S,x=i;
}
Res=max(Res,M);
if(b!=e){
for(i=s;i<=l;i++)Off(i);
Do1(b,m-1,s,x);
for(i=m;i<=e;i++)Off(i);
for(i=s;i<x;i++)On(i);
Do1(m+1,e,x,l);
for(i=s;i<x;i++)Off(i);
}
else{
for(i=s;i<=l;i++)Off(i);
for(i=m;i<=e;i++)Off(i);
}
}
void Do2(int b, int e, int s, int l){
if(b>e)return;
int m = (b+e)>>1, i, x;
long long M=0,S;
for(i=b;i<=m;i++)On(i);
for(i=l;i>=s;i--){
On(i);
S = Gap(D-(m-P)-(m-i));
if(M<S)M=S,x=i;
}
Res=max(Res,M);
if(b!=e){
for(i=s;i<=l;i++)Off(i);
Do2(m+1,e,x,l);
for(i=b;i<=m;i++)Off(i);
for(i=x+1;i<l;i++)On(i);
Do2(b,m-1,s,x);
for(i=x+1;i<l;i++)Off(i);
}
else{
for(i=s;i<=l;i++)Off(i);
for(i=b;i<=m;i++)Off(i);
}
}
long long int findMaxAttraction(int n, int start, int d, int attraction[]) {
int i;
D = d;
for(i=0;i<n;i++){
w[i].a = attraction[i];
w[i].num = i;
}
sort(w,w+n);
for(i=0;i<n;i++)Num[w[i].num]=i;
P=start;
Res=0;
Do1(max(start-d/2,0),start,start,n-1);
if(start)Do2(start,min(n-1,start+d/2),0,start-1);
return Res;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
6632 KB |
Output is correct |
2 |
Correct |
0 ms |
6636 KB |
Output is correct |
3 |
Correct |
0 ms |
6632 KB |
Output is correct |
4 |
Correct |
0 ms |
6636 KB |
Output is correct |
5 |
Correct |
0 ms |
6632 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
25 ms |
6628 KB |
Output is correct |
2 |
Correct |
24 ms |
6628 KB |
Output is correct |
3 |
Correct |
28 ms |
6632 KB |
Output is correct |
4 |
Correct |
28 ms |
6628 KB |
Output is correct |
5 |
Correct |
33 ms |
6632 KB |
Output is correct |
6 |
Correct |
19 ms |
6628 KB |
Output is correct |
7 |
Correct |
24 ms |
6632 KB |
Output is correct |
8 |
Correct |
8 ms |
6632 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
6632 KB |
Output is correct |
2 |
Correct |
4 ms |
6632 KB |
Output is correct |
3 |
Correct |
0 ms |
6628 KB |
Output is correct |
4 |
Correct |
10 ms |
6628 KB |
Output is correct |
5 |
Incorrect |
9 ms |
6628 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
154 ms |
6632 KB |
Output is correct |
2 |
Correct |
42 ms |
6632 KB |
Output is correct |
3 |
Correct |
138 ms |
6632 KB |
Output is correct |
4 |
Incorrect |
8 ms |
6632 KB |
Output isn't correct |
5 |
Halted |
0 ms |
0 KB |
- |