Submission #2195776


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

long long N,L,a[100009],b[100009],c[100009],S;

long long solve_naive(vector<long long>&A,vector<long long>&B,vector<long long>&C){
	long long cx=0,cost=0;
	for(int i=0;i<B.size();i++){
		for(int j=cx;j<C.size();j++){
			if(C[cx]>=B[i]){
				C[cx]-=B[i];cost+=llabs(A[i]-A[cx])*B[i];
				B[i]=0;break;
			}
			else{
				B[i]-=C[cx];cost+=llabs(A[i]-A[cx])*C[cx];
				C[cx]=0;cx++;
			}
		}
	}
	//cout<<cost<<endl;
	return cost;
}

long long solve(long long pos){
	long long I=(pos+S*2)/S;I-=2;
	pos-=I*S;I*=L;
	long long G=0;
	vector<tuple<long long,long long,long long>>T;
	for(int i=0;i<N;i++){
		if(G+c[i]>=pos) {
			T.push_back(make_tuple(I+a[i],0LL,G+c[i]-pos));
			long long J=I;
			for(int j=i+1;j<N+i;j++){
				if(j==N) J+=L;
				T.push_back(make_tuple(J+a[j%N],0LL,c[j%N]));
			}
			T.push_back(make_tuple(I+L+a[i],0LL,pos-G));
			for(int j=0;j<N;j++){
				T.push_back(make_tuple(a[j],b[j],0LL));
			}
			break;
		}
		G+=c[i];
	}
	vector<int>X;
	for(int i=0;i<T.size();i++) X.push_back(get<0>(T[i]));
	sort(X.begin(),X.end());
	X.erase(unique(X.begin(),X.end()),X.end());
	
	vector<long long>A(X.size(),0),B(X.size(),0),C(X.size(),0);
	for(int i=0;i<X.size();i++) A[i]=X[i];
	for(int i=0;i<T.size();i++){
		long long pos1=lower_bound(X.begin(),X.end(),(int)get<0>(T[i]))-X.begin();
		B[pos1]+=get<1>(T[i]);
		C[pos1]+=get<2>(T[i]);
	}
	//cout<<endl;
	//cout<<"pos = "<<pos<<endl;
	//cout<<I<<" "<<S<<endl;
	/*for(int i=0;i<A.size();i++){
		cout<<A[i]<<" "<<B[i]<<" "<<C[i]<<endl;
	}*/
	return solve_naive(A,B,C);
}

int main(){
	cin>>N>>L;
	for(int i=0;i<N;i++){
		scanf("%lld%lld%lld", &a[i], &b[i], &c[i]);S+=b[i];
	}
	long long L=-S,R=S+1,M,ans=(1LL<<60);
	for(int i=0;i<38;i++){
		M=(L+R)/2;
		long long I1=solve(M);
		long long I2=solve(M+1);
		ans=min(ans,min(I1,I2));
		if(I1>I2) L=M;
		else R=M;
	}
	cout<<ans<<endl;
	return 0;
}

Submission Info

Submission Time
Task D - タクシー
User E869120
Language C++14 (Clang 3.8.0)
Score 0
Code Size 1976 Byte
Status CE

Compile Error

./Main.cpp:1:10: fatal error: 'bits/stdc++.h' file not found
#include <bits/stdc++.h>
         ^
1 error generated.