102332024-03-29 17:04:38111Egyengetőcpp17Futási hiba 0/10035ms66652 KiB
#include <bits/stdc++.h>
using namespace std;

#include "grader.h"

#define int long long

struct Nd{
	int a,d,cc=-1;
	int32_t l,r;
};

struct ST{
	int n,s;
	int32_t root;
	Nd*v=new Nd[1000000]{};
	
	ST(int n):n(n),root(0),s(0){
	}
	
	void update(int32_t&i,int l,int r,int ll,int rr){
		if(l>rr||r<ll){
			return;
		}
		if(!i){
			i=++s;
		}
		if(l>=ll&&r<=rr){
			v[i].a+=l-ll;
			v[i].d+=1;
			return;
		}
		update(v[i].l,l,(l+r)/2,ll,rr);
		update(v[i].r,(l+r)/2+1,r,ll,rr);
	}
	
	void update(int ll,int rr){
		update(root,0,n-1,ll,rr);
	}
	
	int query(int32_t&i,int l,int r,int ii){
		if(!i||l>ii||r<ii){
			return 0;
		}
		int ans=v[i].a+v[i].d*(ii-l);
		if(l==r){
			return ans;
		}
		if(ii<=(l+r)/2){
			ans+=query(v[i].l,l,(l+r)/2,ii);
		}
		else{
			ans+=query(v[i].r,(l+r)/2+1,r,ii);
		}
		return ans;
	}
	
	int query(int ii){
		return query(root,0,n-1,ii);
	}
};

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int N=getN(),K=getK(),M=4e8;
	ST a(M+1),b(M+1);
	auto calc=[&](int x)->int{
		return a.query(x)+b.query(M/2-(x+K));
	};
	int pi=-1;
	for(int i=0;i<N;i++){
		int y=Data();
		a.update(y,M);
		b.update(M/2-y,M);
		int l=0,h=1e8;
		if(pi!=-1){
			l=min(pi,y),h=max(pi,y);
		}
		while(h-l>=3){
			int m1=l+(h-l)/3;
			int m2=h-(h-l)/3;
			if(calc(m1)<=calc(m2)){
				h=m2;
			}
			else{
				l=m1;
			}
		}
		int ans=1e18;
		for(int i=l;i<=h;i++){
			int a=calc(i);
			if(a<ans){
				ans=a;
				pi=i;
			}
		}
		Solution(ans);
	}
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Futási hiba35ms66652 KiB
2Futási hiba32ms66408 KiB
subtask20/20
3Futási hiba34ms66180 KiB
4Futási hiba35ms65940 KiB
5Futási hiba35ms65832 KiB
6Futási hiba35ms65804 KiB
7Futási hiba35ms65812 KiB
8Futási hiba29ms65564 KiB
subtask30/20
9Futási hiba34ms65556 KiB
10Futási hiba35ms65544 KiB
11Futási hiba34ms65536 KiB
12Futási hiba34ms65536 KiB
13Futási hiba34ms65528 KiB
14Futási hiba34ms65528 KiB
subtask40/20
15Futási hiba28ms65284 KiB
16Futási hiba34ms65288 KiB
17Futási hiba30ms65288 KiB
18Futási hiba28ms65268 KiB
19Futási hiba34ms65240 KiB
20Futási hiba34ms65040 KiB
subtask50/40
21Futási hiba26ms64804 KiB
22Futási hiba34ms64780 KiB
23Futási hiba28ms64556 KiB
24Futási hiba32ms64344 KiB
25Futási hiba28ms64156 KiB
26Futási hiba28ms64176 KiB