102132024-03-29 15:55:10111Egyengetőcpp17Időlimit túllépés 40/1003.589s64300 KiB
#include <bits/stdc++.h>
using namespace std;

#include "grader.h"

#define int long long

struct Nd{
	int a,d;
	Nd*l,*r;
};

struct ST{
	int n;
	Nd*root;
	
	ST(int n):n(n),root(nullptr){
	}
	
	void update(Nd*&i,int l,int r,int ll,int rr){
		if(l>rr||r<ll){
			return;
		}
		if(!i){
			i=new Nd{};
		}
		if(l>=ll&&r<=rr){
			i->a+=l-ll;
			i->d+=1;
			return;
		}
		update(i->l,l,(l+r)/2,ll,rr);
		update(i->r,(l+r)/2+1,r,ll,rr);
	}
	
	void update(int ll,int rr){
		update(root,0,n-1,ll,rr);
	}
	
	int query(Nd*&i,int l,int r,int ii){
		if(!i||l>ii||r<ii){
			return 0;
		}
		int ans=i->a+i->d*(ii-l);
		if(l==r){
			return ans;
		}
		return ans+query(i->l,l,(l+r)/2,ii)+query(i->r,(l+r)/2+1,r,ii);
	}
	
	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=1e10;
	ST a(M+1),b(M+1);
	auto calc=[&](int x)->int{
		return a.query(x)+b.query(M/2-(x+K));
	};
	for(int i=0;i<N;i++){
		int y=Data();
		a.update(y,M);
		b.update(M/2-y,M);
		int l=-1e9,h=1e9;
		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++){
			ans=min(ans,calc(i));
		}
		Solution(ans);
	}
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1892 KiB
2Elfogadva3ms2024 KiB
subtask20/20
3Elfogadva6ms2448 KiB
4Elfogadva8ms2560 KiB
5Elfogadva13ms2876 KiB
6Elfogadva17ms3020 KiB
7Elfogadva21ms2752 KiB
8Időlimit túllépés3.509s3684 KiB
subtask320/20
9Elfogadva34ms3108 KiB
10Elfogadva41ms5000 KiB
11Elfogadva39ms4404 KiB
12Elfogadva39ms4440 KiB
13Elfogadva39ms4532 KiB
14Elfogadva37ms4408 KiB
subtask420/20
15Elfogadva199ms3940 KiB
16Elfogadva411ms20792 KiB
17Elfogadva314ms4036 KiB
18Elfogadva412ms21028 KiB
19Elfogadva377ms6472 KiB
20Elfogadva388ms11664 KiB
subtask50/40
21Futási hiba3.401s64300 KiB
22Időlimit túllépés3.556s3672 KiB
23Időlimit túllépés3.555s3804 KiB
24Időlimit túllépés3.589s3604 KiB
25Futási hiba2.506s64284 KiB
26Futási hiba2.515s64272 KiB