QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#678067#9529. Farm Managementucup-team087#AC ✓30ms13640kbC++2318.0kb2024-10-26 13:57:482024-10-26 13:57:56

Judging History

你现在查看的是最新测评结果

  • [2024-10-26 13:57:56]
  • 评测
  • 测评结果:AC
  • 用时:30ms
  • 内存:13640kb
  • [2024-10-26 13:57:48]
  • 提交

answer

#ifndef LOCAL
#pragma GCC optimize ("Ofast")
#pragma GCC optimize ("unroll-loops")
#endif

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

using ll=long long;
#define int ll

bool dbg=false;

#define rng(i,a,b) for(int i=int(a);i<int(b);i++)
#define rep(i,b) rng(i,0,b)
#define gnr(i,a,b) for(int i=int(b)-1;i>=int(a);i--)
#define per(i,b) gnr(i,0,b)
#define pb push_back
#define eb emplace_back
#define a first
#define b second
#define bg begin()
#define ed end()
#define all(x) x.bg,x.ed
#define si(x) int(x.size())
#ifdef LOCAL
#define dmp(x) cerr<<__LINE__<<" "<<#x<<" "<<x<<endl
#else
#define dmp(x) void(0)
#endif

template<class t,class u> bool chmax(t&a,u b){if(a<b){a=b;return true;}else return false;}
template<class t,class u> bool chmin(t&a,u b){if(b<a){a=b;return true;}else return false;}

template<class t> using vc=vector<t>;
template<class t> using vvc=vc<vc<t>>;

using pi=pair<int,int>;
using vi=vc<int>;
using vvi=vc<vc<int>>;

template<class t,class u>
ostream& operator<<(ostream& os,const pair<t,u>& p){
	return os<<"{"<<p.a<<","<<p.b<<"}";
}

template<class t> ostream& operator<<(ostream& os,const vc<t>& v){
	os<<"{";
	for(auto e:v)os<<e<<",";
	return os<<"}";
}

#define mp make_pair
#define mt make_tuple
#define one(x) memset(x,-1,sizeof(x))
#define zero(x) memset(x,0,sizeof(x))
#ifdef LOCAL
void dmpr(ostream&os){os<<endl;}
template<class T,class... Args>
void dmpr(ostream&os,const T&t,const Args&... args){
	os<<t<<" ";
	dmpr(os,args...);
}
#define dmp2(...) dmpr(cerr,__LINE__,##__VA_ARGS__)
#else
#define dmp2(...) void(0)
#endif

using uint=unsigned;
using ull=unsigned long long;

template<class t,size_t n>
ostream& operator<<(ostream&os,const array<t,n>&a){
	return os<<vc<t>(all(a));
}

ll rand_int(ll l, ll r) { //[l, r]
	//#ifdef LOCAL
	static mt19937_64 gen;
	/*#else
	static mt19937_64 gen(chrono::steady_clock::now().time_since_epoch().count());
	#endif*/
	return uniform_int_distribution<ll>(l, r)(gen);
}

ll rand_int(ll k){ //[0,k)
	return rand_int(0,k-1);
}
string rand_string(int n,char lw,char up){
	string s(n,'?');
	rep(i,n)s[i]=rand_int(lw,up);
	return s;
}

int current_run_id,run_batch_size=1000;
int calc_random_limit(){
	return current_run_id/run_batch_size+1;
}
template<class t>
void generate_single(t&a){
	a=rand_int(1,calc_random_limit());
}
void generate_single(string&a){
	int n;generate_single(n);
	a=rand_string(n,'a','b');
}
template<class t,class u>
void generate_single(pair<t,u>&a){
	generate_single(a.a);
	generate_single(a.b);
}
//https://trap.jp/post/1224/
template<class... Args>
void input(Args&... a){
	if(dbg){
		(generate_single(a),...);
	}else{
		#ifdef USE_FAST_IO
		sc.read(a...);
		#else
		(cin >> ... >> a);
		#endif
	}
}
#define INT(...) int __VA_ARGS__;input(__VA_ARGS__)
#define LL(...) ll __VA_ARGS__;input(__VA_ARGS__)
#define ULL(...) ull __VA_ARGS__;input(__VA_ARGS__)
#define STR(...) string __VA_ARGS__;input(__VA_ARGS__)
#define CHR(...) char __VA_ARGS__;input(__VA_ARGS__)
#define DBL(...) double __VA_ARGS__;input(__VA_ARGS__)
#define LD(...) ld __VA_ARGS__;input(__VA_ARGS__)
#define overload3(a,b,c,d,...) d
#define VI2(name,size) vi name(size);rep(i_##name,size)input(name[i_##name]);
#define VI3(name,size,offset) vi name(size);rep(i_##name,size)input(name[i_##name]),name[i_##name]+=offset;
#define VI(...) overload3(__VA_ARGS__,VI3,VI2)(__VA_ARGS__)
#define VPI(name,size) vc<pi> name(size);rep(i_##name,size)input(name[i_##name]);
#define VVI(name,sizeN,sizeM) vvi name(sizeN,vi(sizeM));\
rep(i_##name,sizeN)rep(j_##name,sizeM)input(name[i_##name][j_##name]);
#define VS(name,size) vc<string> name(size);rep(i_##name,size)input(name[i_##name]);

#define overload5(a,b,c,d,e,f,...) f
#define VVC4(type,name,sizeN,sizeM) vvc<type> name(sizeN,vc<type>(sizeM));
#define VVC5(type,name,sizeN,sizeM,ini) vvc<type> name(sizeN,vc<type>(sizeM,ini));
#define VVC(...) overload5(__VA_ARGS__,VVC5,VVC4)(__VA_ARGS__)

template<class T>
T vvvc(T v){
	return v;
}

template<class T,class...Args>
auto vvvc(int n,T v,Args...args){
	return vector(n,vvvc(v,args...));
}

template<int i,class T>
void print_tuple(ostream&,const T&){
}

template<int i,class T,class H,class ...Args>
void print_tuple(ostream&os,const T&t){
	if(i)os<<",";
	os<<get<i>(t);
	print_tuple<i+1,T,Args...>(os,t);
}

template<class ...Args>
ostream& operator<<(ostream&os,const tuple<Args...>&t){
	os<<"{";
	print_tuple<0,tuple<Args...>,Args...>(os,t);
	return os<<"}";
}

void printsuc(int suc){
	#ifdef USE_FAST_IO
		if(suc==1)pr.write('\n');
		if(suc==2)pr.write(' ');
	#else
		if(suc==1){
			if(dbg)cout<<endl;
			else{
				#ifdef LOCAL
				cout<<endl;
				#else
				cout<<"\n";
				#endif
			}
		}
		if(suc==2)
			cout<<" ";
	#endif
}

template<class t>
void print_single(t x,int suc=1){
	#ifdef USE_FAST_IO
	pr.write(x);
	#else
	cout<<x;
	#endif
	printsuc(suc);
}

template<class t,class u>
void print_single(const pair<t,u>&p,int suc=1){
	print_single(p.a,2);
	print_single(p.b,suc);
}

template<class T>
void print_single(const vector<T>&v,int suc=1){
	rep(i,v.size())
		print_single(v[i],i==int(v.size())-1?3:2);
	printsuc(suc);
}

template<class T,size_t N>
void print_single(const array<T,N>&v,int suc=1){
	rep(i,N)
		print_single(v[i],i==int(N)-1?3:2);
	printsuc(suc);
}

template<class T>
void print(const T&t){
	print_single(t);
}

template<class T,class ...Args>
void print(const T&t,const Args&...args){
	print_single(t,2);
	print(args...);
}

template<class T>
void printvv(const vvc<T>&vs){
	for(const auto&row:vs)print(row);
}

string readString(){
	string s;
	cin>>s;
	return s;
}

template<class T>
T sq(const T& t){
	return t*t;
}

void YES(bool ex=true){
	cout<<"YES\n";
	if(ex)exit(0);
	#ifdef LOCAL
	cout.flush();
	#endif
}
void NO(bool ex=true){
	cout<<"NO\n";
	if(ex)exit(0);
	#ifdef LOCAL
	cout.flush();
	#endif
}
void Yes(bool ex=true){
	cout<<"Yes\n";
	if(ex)exit(0);
	#ifdef LOCAL
	cout.flush();
	#endif
}
void No(bool ex=true){
	cout<<"No\n";
	if(ex)exit(0);
	#ifdef LOCAL
	cout.flush();
	#endif
}
//#define CAPITAL
/*
void yes(bool ex=true){
	#ifdef CAPITAL
	cout<<"YES"<<"\n";
	#else
	cout<<"Yes"<<"\n";
	#endif
	if(ex)exit(0);
	#ifdef LOCAL
	cout.flush();
	#endif
}
void no(bool ex=true){
	#ifdef CAPITAL
	cout<<"NO"<<"\n";
	#else
	cout<<"No"<<"\n";
	#endif
	if(ex)exit(0);
	#ifdef LOCAL
	cout.flush();
	#endif
}*/
void possible(bool ex=true){
	#ifdef CAPITAL
	cout<<"POSSIBLE"<<"\n";
	#else
	cout<<"Possible"<<"\n";
	#endif
	if(ex)exit(0);
	#ifdef LOCAL
	cout.flush();
	#endif
}
void impossible(bool ex=true){
	#ifdef CAPITAL
	cout<<"IMPOSSIBLE"<<"\n";
	#else
	cout<<"Impossible"<<"\n";
	#endif
	if(ex)exit(0);
	#ifdef LOCAL
	cout.flush();
	#endif
}

constexpr ll ten(int n){
	return n==0?1:ten(n-1)*10;
}

const ll infLL=LLONG_MAX/3;

#ifdef int
const int inf=infLL;
#else
const int inf=INT_MAX/2-100;
#endif

int topbit(signed t){
	return t==0?-1:31-__builtin_clz(t);
}
int topbit(ll t){
	return t==0?-1:63-__builtin_clzll(t);
}
int topbit(ull t){
	return t==0?-1:63-__builtin_clzll(t);
}
int botbit(signed a){
	return a==0?32:__builtin_ctz(a);
}
int botbit(ll a){
	return a==0?64:__builtin_ctzll(a);
}
int botbit(ull a){
	return a==0?64:__builtin_ctzll(a);
}
int popcount(signed t){
	return __builtin_popcount(t);
}
int popcount(ll t){
	return __builtin_popcountll(t);
}
int popcount(ull t){
	return __builtin_popcountll(t);
}
int bitparity(ll t){
	return __builtin_parityll(t);
}
bool ispow2(int i){
	return i&&(i&-i)==i;
}
ll mask(int i){
	return (ll(1)<<i)-1;
}
ull umask(int i){
	return (ull(1)<<i)-1;
}
ll minp2(ll n){
	if(n<=1)return 1;
	else return ll(1)<<(topbit(n-1)+1);
}

bool inc(int a,int b,int c){
	return a<=b&&b<=c;
}

template<class S> void mkuni(S&v){
	sort(all(v));
	v.erase(unique(all(v)),v.ed);
}

template<class t> bool isuni(vc<t> v){
	int s=si(v);
	mkuni(v);
	return si(v)==s;
}

template<class t>
void myshuffle(vc<t>&a){
	rep(i,si(a))swap(a[i],a[rand_int(0,i)]);
}

template<class S,class u>
int lwb(const S&v,const u&a){
	return lower_bound(all(v),a)-v.bg;
}
template<class t,class u>
bool bis(const vc<t>&v,const u&a){
	return binary_search(all(v),a);
}

//VERIFY: yosupo
//KUPC2017J
//AOJDSL1A
//without rank
struct unionfind{
	vi p,s;
	int c;
	unionfind(int n):p(n,-1),s(n,1),c(n){}
	void clear(){
		fill(all(p),-1);
		fill(all(s),1);
		c=si(p);
	}
	int find(int a){
		return p[a]==-1?a:(p[a]=find(p[a]));
	}
	//set b to a child of a
	bool unite(int a,int b){
		a=find(a);
		b=find(b);
		if(a==b)return false;
		p[b]=a;
		s[a]+=s[b];
		c--;
		return true;
	}
	bool same(int a,int b){
		return find(a)==find(b);
	}
	int sz(int a){
		return s[find(a)];
	}
};

vvc<int> readGraph(int n,int m){
	vvc<int> g(n);
	rep(i,m){
		int a,b;
		cin>>a>>b;
		//sc.read(a,b);
		a--;b--;
		g[a].pb(b);
		g[b].pb(a);
	}
	return g;
}

vvc<int> rand_tree(int n){
	vvc<int> t(n);
	unionfind uf(n);
	while(uf.c>1){
		int a=rand_int(n);
		int b=rand_int(n);
		if(uf.unite(a,b)){
			t[a].pb(b);
			t[b].pb(a);
		}
	}
	return t;
}

vvc<int> readTree(int n){
	if(dbg){
		return rand_tree(n);
	}else{
		return readGraph(n,n-1);
	}
}

vi readRooted(int n){
	assert(!dbg);
	vi par(n,-1);
	rng(i,1,n){
		input(par[i]);
		par[i]--;
		assert(inc(0,par[i],i-1));
	}
	return par;
}

void printTree(const vvc<int> t){
	int n=si(t);
	int degsum=0;
	rep(i,n)degsum+=si(t[i]);
	if(degsum==n-1){
		//directed
		rep(i,si(t))for(auto j:t[i]){
			print(i+1,j+1);
		}
	}else if(degsum==2*(n-1)){
		//undirected
		rep(i,si(t))for(auto j:t[i])if(i<j){
			print(i+1,j+1);
		}
	}else{
		assert(false);
	}
}

template<class t>
vc<t> presum(const vc<t>&a){
	vc<t> s(si(a)+1);
	rep(i,si(a))s[i+1]=s[i]+a[i];
	return s;
}
vc<ll> presum(const vi&a){
	vc<ll> s(si(a)+1);
	rep(i,si(a))s[i+1]=s[i]+a[i];
	return s;
}
//BIT で数列を管理するときに使う (CF850C)
template<class t>
vc<t> predif(vc<t> a){
	gnr(i,1,si(a))a[i]-=a[i-1];
	return a;
}
template<class t>
vvc<ll> imos(const vvc<t>&a){
	int n=si(a),m=si(a[0]);
	vvc<ll> b(n+1,vc<ll>(m+1));
	rep(i,n)rep(j,m)
		b[i+1][j+1]=b[i+1][j]+b[i][j+1]-b[i][j]+a[i][j];
	return b;
}

//verify してないや
void transvvc(int&n,int&m){
	swap(n,m);
}
template<class t,class... Args>
void transvvc(int&n,int&m,vvc<t>&a,Args&...args){
	assert(si(a)==n);
	vvc<t> b(m,vi(n));
	rep(i,n){
		assert(si(a[i])==m);
		rep(j,m)b[j][i]=a[i][j];
	}
	a.swap(b);
	transvvc(n,m,args...);
}
//CF854E
void rotvvc(int&n,int&m){
	swap(n,m);
}
template<class t,class... Args>
void rotvvc(int&n,int&m,vvc<t>&a,Args&...args){
	assert(si(a)==n);
	vvc<t> b(m,vi(n));
	rep(i,n){
		assert(si(a[i])==m);
		rep(j,m)b[m-1-j][i]=a[i][j];
	}
	a.swap(b);
	rotvvc(n,m,args...);
}

//ソートして i 番目が idx[i]
//CF850C
template<class t>
vi sortidx(const vc<t>&a){
	int n=si(a);
	vi idx(n);iota(all(idx),0);
	sort(all(idx),[&](int i,int j){return a[i]<a[j];});
	return idx;
}
//vs[i]=a[idx[i]]
//例えば sortidx で得た idx を使えば単にソート列になって返ってくる
//CF850C
template<class t>
vc<t> a_idx(const vc<t>&a,const vi&idx){
	int n=si(a);
	assert(si(idx)==n);
	vc<t> vs(n);
	rep(i,n)vs[i]=a[idx[i]];
	return vs;
}
//CF850C
vi invperm(const vi&p){
	int n=si(p);
	vi q(n);
	rep(i,n)q[p[i]]=i;
	return q;
}

template<class t,class s=t>
s SUM(const vc<t>&a){
	return accumulate(all(a),s(0));
}
template<class t,size_t K,class s=t>
s SUM(const array<t,K>&a){
	return accumulate(all(a),s(0));
}

template<class t>
t MAX(const vc<t>&a){
	return *max_element(all(a));
}

template<class t>
pair<t,int> MAXi(const vc<t>&a){
	auto itr=max_element(all(a));
	return mp(*itr,itr-a.bg);
}

template<class A>
auto MIN(const A&a){
	return *min_element(all(a));
}

template<class t>
pair<t,int> MINi(const vc<t>&a){
	auto itr=min_element(all(a));
	return mp(*itr,itr-a.bg);
}

vi vid(int n){
	vi res(n);iota(all(res),0);
	return res;
}

template<class S>
void soin(S&s){
	sort(all(s));
}

template<class S,class F>
void soin(S&s,F&&f){
	sort(all(s),forward<F>(f));
}

template<class S>
S soout(S s){
	soin(s);
	return s;
}

template<class S>
void rein(S&s){
	reverse(all(s));
}

template<class S>
S reout(S s){
	rein(s);
	return s;
}

template<class t,class u>
pair<t,u>&operator+=(pair<t,u>&a,pair<t,u> b){
	a.a+=b.a;a.b+=b.b;return a;}
template<class t,class u>
pair<t,u>&operator-=(pair<t,u>&a,pair<t,u> b){
	a.a-=b.a;a.b-=b.b;return a;}
template<class t,class u>
pair<t,u> operator+(pair<t,u> a,pair<t,u> b){return mp(a.a+b.a,a.b+b.b);}
template<class t,class u>
pair<t,u> operator-(pair<t,u> a,pair<t,u> b){return mp(a.a-b.a,a.b-b.b);}
template<class t,class u,class v>
pair<t,u>&operator*=(pair<t,u>&a,v b){
	a.a*=b;a.b*=b;return a;}
template<class t,class u,class v>
pair<t,u> operator*(pair<t,u> a,v b){return a*=b;}
template<class t,class u>
pair<t,u> operator-(pair<t,u> a){return mp(-a.a,-a.b);}
namespace std{
template<class t,class u>
istream&operator>>(istream&is,pair<t,u>&a){
	return is>>a.a>>a.b;
}
}

template<class t>
t gpp(vc<t>&vs){
	assert(si(vs));
	t res=move(vs.back());
	vs.pop_back();
	return res;
}

template<class t,class u>
void pb(vc<t>&a,const vc<u>&b){
	a.insert(a.ed,all(b));
}

template<class t,class...Args>
vc<t> cat(vc<t> a,Args&&...b){
	(pb(a,forward<Args>(b)),...);
	return a;
}

template<class t,class u>
vc<t>& operator+=(vc<t>&a,u x){
	for(auto&v:a)v+=x;
	return a;
}

template<class t,class u>
vc<t> operator+(vc<t> a,u x){
	return a+=x;
}

template<class t>
vc<t>& operator+=(vc<t>&a,const vc<t>&b){
	a.resize(max(si(a),si(b)));
	rep(i,si(b))a[i]+=b[i];
	return a;
}

template<class t>
vc<t> operator+(const vc<t>&a,const vc<t>&b){
	vc<t> c(max(si(a),si(b)));
	rep(i,si(a))c[i]+=a[i];
	rep(i,si(b))c[i]+=b[i];
	return c;
}

template<class t,class u>
vc<t>& operator-=(vc<t>&a,u x){
	for(auto&v:a)v-=x;
	return a;
}
template<class t,class u>
vc<t> operator-(vc<t> a,u x){
	return a-=x;
}

template<class t,class u>
vc<t>& operator*=(vc<t>&a,u x){
	for(auto&v:a)v*=x;
	return a;
}
template<class t,class u>
vc<t> operator*(vc<t> a,u x){
	return a*=x;
}

template<class t,class u>
vc<t>& operator/=(vc<t>&a,u x){
	for(auto&v:a)v/=x;
	return a;
}
template<class t,class u>
vc<t> operator/(vc<t> a,u x){
	return a/=x;
}

template<class t>
vc<t>& operator<<=(vc<t>&a,int k){
	assert(k>=0);
	a.insert(a.bg,k,t(0));
	return a;
}
template<class t>
vc<t> operator<<(vc<t> a,int k){
	return a<<=k;
}

template<class t>
vc<t>& operator>>=(vc<t>&a,int k){
	if(si(a)<=k)a.clear();
	else a.erase(a.bg,a.bg+k);
	return a;
}
template<class t>
vc<t> operator>>(vc<t> a,int k){
	return a>>=k;
}

template<class t,class u>
void remval(vc<t>&a,const u&v){
	a.erase(remove(all(a),v),a.ed);
}
//消した要素の個数を返してくれる
//UCUP 2-8-F
template<class t,class F>
int remif(vc<t>&a,F f){
	auto itr=remove_if(all(a),f);
	int res=a.ed-itr;
	a.erase(itr,a.ed);
	return res;
}
template<class t>
void rempos(vc<t>&a,int i){
	assert(inc(0,i,si(a)-1));
	a.erase(a.bg+i);
}

template<class VS,class u>
void fila(VS&vs,const u&a){
	fill(all(vs),a);
}

template<class t,class u>
int findid(const vc<t>&vs,const u&a){
	auto itr=find(all(vs),a);
	if(itr==vs.ed)return -1;
	else return itr-vs.bg;
}

template<class t>
void rtt(vc<t>&vs,int i){
	rotate(vs.bg,vs.bg+i,vs.ed);
}

//Multiuni2023-8 C
//f(lw)=false,...,f(n-1)=false,f(n)=true,...,f(up)=true,
//のときに n を返す
template<class F>
int find_min_true(int lw,int up,F f){
	while(up-lw>1){
		const int mid=(lw+up)/2;
		if(f(mid))up=mid;
		else lw=mid;
	}
	return up;
}
//f(lw)=true,f(up)=false
template<class F>
int find_max_true(int lw,int up,F f){
	while(up-lw>1){
		const int mid=(lw+up)/2;
		if(f(mid))lw=mid;
		else up=mid;
	}
	return lw;
}

template<class t> using pqmin=priority_queue<t,vc<t>,greater<t>>;
template<class t> using pqmax=priority_queue<t>;
using T=tuple<int,int,int>;

int sub(vc<T> wlr,int m){
	soin(wlr);
	int ans=0;
	for(auto [w,l,r]:wlr){
		m-=l;
		ans+=l*w;
	}
	assert(m>=0);
	for(auto [w,l,r]:reout(wlr)){
		int u=min(m,r-l);
		m-=u;
		ans+=w*u;
	}
	assert(m==0);
	return ans;
}

void slv(){
	INT(n,m);
	vc<T> wlr;
	rep(_,n){
		INT(w,l,r);
		wlr.eb(w,l,r);
	}
	soin(wlr);
	if(dbg){
		int lsum=0,rsum=0;
		for(auto&[w,l,r]:wlr){
			if(l>r)swap(l,r);
			lsum+=l;
			rsum+=r;
		}
		m=rand_int(lsum,rsum);
	}
	int orgm=m;
	
	int ans;
	{
		auto tmp=wlr;
		get<2>(tmp.back())=inf;
		ans=sub(tmp,m);
	}
	
	dmp(ans);
	
	vc<pi> used,rem;
	int off=0;
	for(auto [w,l,r]:wlr){
		m-=l;
		off+=l*w;
	}
	assert(m>=0);
	for(auto [w,l,r]:reout(wlr)){
		int u=min(m,r-l);
		m-=u;
		off+=w*u;
		used.eb(w,l+u);
		rem.eb(w,r-l-u);
	}
	assert(m==0);
	
	rein(used);
	rein(rem);
	
	dmp(off);
	dmp(used);
	dmp(rem);
	
	int cur=0;
	for(auto [cost,cap]:used){
		int dif=cap-cur;
		if(dif<0)continue;
		assert(dif>=0);
		while(dif>0&&si(rem)){
			auto&[w,c]=rem.back();
			if(w<cost)break;
			int u=min(c,dif);
			c-=u;
			dif-=u;
			off+=w*u;
			cur+=u;
			if(c==0)rem.pop_back();
		}
		int val=off-cur*cost;
		chmax(ans,val);
	}
	
	if(dbg){
		int god=0;
		rep(i,n){
			auto tmp=wlr;
			get<1>(tmp[i])=0;
			get<2>(tmp[i])=orgm;
			chmax(god,sub(tmp,orgm));
		}
		if(god!=ans){
		//	cerr<<n<<" "<<orgm<<endl;
		//	cerr<<wlr<<endl;
		//	cerr<<god<<" "<<ans<<endl;
		}
		assert(god==ans);
	}else{
		print(ans);
	}
}

signed main(signed argc,char*argv[]){
	if(argc>1&&strcmp(argv[1],"D")==0)dbg=true;
	
	cin.tie(0);
	ios::sync_with_stdio(0);
	cout<<fixed<<setprecision(20);
	
	if(dbg){
		while(1){
			if(current_run_id%run_batch_size==0){
				cerr<<"Current Run "<<current_run_id<<endl;
			}
			slv();
			current_run_id++;
		}
	}else{
		//int t;cin>>t;rep(_,t)
		slv();
	}
}

这程序好像有点Bug,我给组数据试试?

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 3648kb

input:

5 17
2 3 4
6 1 5
8 2 4
4 3 3
7 5 5

output:

109

result:

ok single line: '109'

Test #2:

score: 0
Accepted
time: 0ms
memory: 3496kb

input:

12 62
503792 9 10
607358 1 3
600501 10 10
33249 4 4
774438 6 6
197692 3 6
495807 8 8
790225 5 9
77272 3 8
494819 4 9
894779 3 9
306279 5 6

output:

35204500

result:

ok single line: '35204500'

Test #3:

score: 0
Accepted
time: 0ms
memory: 3620kb

input:

15 32
835418 2 3
178262 1 3
527643 2 2
519710 1 1
774544 3 3
82312 1 1
808199 1 1
809396 1 3
255882 1 3
80467 1 3
874973 1 3
813965 1 2
198275 1 2
152356 1 3
802055 1 1

output:

22000255

result:

ok single line: '22000255'

Test #4:

score: 0
Accepted
time: 0ms
memory: 3596kb

input:

13 20
526447 1 1
807398 2 2
4167 1 2
944031 2 2
830685 2 2
394251 1 2
505011 1 2
968848 1 1
58170 1 3
32504 1 1
792273 3 3
196120 1 2
714507 1 1

output:

12878768

result:

ok single line: '12878768'

Test #5:

score: 0
Accepted
time: 0ms
memory: 3540kb

input:

13 32
582584 1 3
335440 3 3
971984 1 2
864169 1 2
528515 1 1
382399 1 2
459855 1 2
406909 2 3
66780 2 3
885118 3 3
434844 1 2
93331 1 3
502509 1 3

output:

22065034

result:

ok single line: '22065034'

Test #6:

score: 0
Accepted
time: 0ms
memory: 3832kb

input:

12 77
30244 1 7
518214 3 8
486001 8 9
152634 2 3
180255 3 4
791887 1 6
635820 2 9
881171 3 5
337905 3 8
683182 5 5
300786 3 6
339094 7 9

output:

50453764

result:

ok single line: '50453764'

Test #7:

score: 0
Accepted
time: 0ms
memory: 3548kb

input:

10 3923726
826284 215861 638800
471693 146746 886003
140800 532315 684546
673434 604071 814259
170671 299465 525449
104262 689547 855391
215333 591975 803421
795321 31606 984783
103838 361911 601318
145693 450227 686945

output:

1597735409747

result:

ok single line: '1597735409747'

Test #8:

score: 0
Accepted
time: 21ms
memory: 13128kb

input:

100000 16648414311
252800 55607 195981
157144 548469 789695
643048 2 2
907957 3 3
32532 231618 316365
194428 227513 762023
4231 393553 699179
898052 3 5
507551 3 5
747498 1 4
857939 9 9
440056 764429 796585
495571 117772 838593
4059 551203 870687
60877 597981 770178
593237 4 10
438147 218335 370780
...

output:

4148641232436282

result:

ok single line: '4148641232436282'

Test #9:

score: 0
Accepted
time: 21ms
memory: 12868kb

input:

100000 14997174848
996832 2 5
193379 411081 976749
339827 553492 639067
127364 131886 237768
615192 3 9
417612 599185 637969
812326 2 5
22605 80976 90557
350917 119223 755129
807528 7 8
165108 327186 793786
126946 530792 700713
246467 387234 557026
286888 485816 869662
398882 73798 458939
651741 3 9...

output:

3763949202789374

result:

ok single line: '3763949202789374'

Test #10:

score: 0
Accepted
time: 30ms
memory: 12812kb

input:

99999 49959949282
541788 999954 999965
269794 8 9
446939 999985 999990
994146 7 13
976318 999916 999995
372141 999918 999934
398999 999949 999983
736560 4 7
753380 999933 999979
664693 12 14
336068 999904 999914
337406 11 11
153015 2 3
989608 1 15
61489 999921 999977
438155 999928 999955
374725 6 14...

output:

24950941271114177

result:

ok single line: '24950941271114177'

Test #11:

score: 0
Accepted
time: 29ms
memory: 13380kb

input:

100000 50094841499
989502 999933 999995
613471 999942 999989
987086 999912 999912
170196 8 8
992426 7 8
935974 999985 999993
509210 7 8
136227 999901 999966
975351 3 8
979031 4 6
160909 999918 999956
919448 6 6
166331 3 10
412011 1 2
815782 999967 999985
272771 1 9
414870 6 10
991275 6 8
568088 9999...

output:

25091133401633321

result:

ok single line: '25091133401633321'

Test #12:

score: 0
Accepted
time: 0ms
memory: 3832kb

input:

1 1
1000000 1 1

output:

1000000

result:

ok single line: '1000000'

Test #13:

score: 0
Accepted
time: 13ms
memory: 12816kb

input:

99999 99999
2 1 1
2 1 1
4 1 1
9 1 1
1 1 1
2 1 1
4 1 1
8 1 1
7 1 1
5 1 1
6 1 1
8 1 1
10 1 1
5 1 1
7 1 1
3 1 1
4 1 1
7 1 1
8 1 1
7 1 1
7 1 1
6 1 1
8 1 1
1 1 1
5 1 1
1 1 1
8 1 1
5 1 1
9 1 1
3 1 1
10 1 1
8 1 1
4 1 1
3 1 1
9 1 1
2 1 1
1 1 1
10 1 1
5 1 1
3 1 1
3 1 1
5 1 1
4 1 1
7 1 1
6 1 1
3 1 1
7 1 1
2 1...

output:

549692

result:

ok single line: '549692'

Test #14:

score: 0
Accepted
time: 12ms
memory: 13384kb

input:

100000 100000000000
9 1000000 1000000
9 1000000 1000000
3 1000000 1000000
8 1000000 1000000
7 1000000 1000000
7 1000000 1000000
8 1000000 1000000
10 1000000 1000000
9 1000000 1000000
3 1000000 1000000
5 1000000 1000000
3 1000000 1000000
6 1000000 1000000
5 1000000 1000000
8 1000000 1000000
8 1000000...

output:

549817000000

result:

ok single line: '549817000000'

Test #15:

score: 0
Accepted
time: 22ms
memory: 13640kb

input:

100000 671789
5 2 10
9 5 7
8 2 9
5 8 10
8 2 9
1 1 4
2 4 4
2 4 10
1 7 8
6 2 5
6 2 9
8 2 8
7 4 9
7 2 7
6 9 10
2 8 10
5 2 5
10 7 7
8 10 10
1 2 10
9 5 8
1 2 10
7 7 10
2 1 8
8 3 5
9 2 6
9 6 7
1 2 6
1 5 9
4 3 9
9 3 9
6 4 5
10 7 10
9 2 6
4 1 1
5 7 10
9 3 8
10 3 7
2 3 7
5 3 8
9 6 10
10 3 7
8 3 10
8 7 8
9 2 ...

output:

4980663

result:

ok single line: '4980663'

Test #16:

score: 0
Accepted
time: 19ms
memory: 12832kb

input:

100000 43584087032
3 308557 419587
10 44993 179507
3 558835 576023
4 479689 820340
7 4935 112717
5 322154 540751
9 153422 454200
3 487079 842717
9 21773 328114
9 690130 713456
4 518679 947666
7 301275 983364
3 911034 987000
2 15489 33232
5 324080 855780
10 274011 978357
7 436627 535933
6 255072 3389...

output:

285837954666

result:

ok single line: '285837954666'

Test #17:

score: 0
Accepted
time: 15ms
memory: 13152kb

input:

100000 494057
192370 2 5
927249 6 10
481645 1 7
890938 2 9
931657 2 8
117542 1 10
701551 1 5
476263 2 8
962638 9 9
141062 2 7
492687 2 5
162204 5 10
287629 1 3
73695 4 6
532420 4 5
148287 4 9
336392 1 10
26418 2 3
604407 6 7
363085 6 10
588785 4 10
935894 3 7
635464 8 9
4054 7 10
788212 5 8
784626 4...

output:

301267755741

result:

ok single line: '301267755741'

Test #18:

score: 0
Accepted
time: 26ms
memory: 12908kb

input:

99999 45855284516
265992 22744 429276
61438 55667 94035
744311 127123 820013
525673 503191 963233
405981 163221 622202
441929 48325 769270
292426 331849 684679
837775 169205 310287
781428 180746 471729
904737 496244 605722
6438 573095 848106
660782 666291 899499
588344 230725 908374
187969 27281 234...

output:

29154320003042268

result:

ok single line: '29154320003042268'

Test #19:

score: 0
Accepted
time: 23ms
memory: 12900kb

input:

100000 39658278416
910036 17012 115825
887707 68696 139006
751733 147105 196317
500363 634963 798238
605013 61172 939770
10545 121743 746170
139387 291373 880992
525268 454997 566484
93296 375808 636120
656743 206221 799161
726434 554530 984728
424654 103201 675866
415178 29860 997339
941218 406409 ...

output:

23031701433310233

result:

ok single line: '23031701433310233'

Test #20:

score: 0
Accepted
time: 27ms
memory: 12884kb

input:

100000 384892
829184 1 7
254316 8 10
293723 10 10
200173 3 10
832598 6 10
516217 2 3
576064 5 9
626015 5 7
797096 1 3
297561 7 9
580487 1 10
971989 1 6
48861 2 9
672368 3 7
860889 2 4
236484 1 10
703037 3 10
564708 4 7
735042 6 8
694950 4 4
30648 7 9
943649 4 7
100913 3 10
212727 2 10
706335 4 7
520...

output:

192678722976

result:

ok single line: '192678722976'

Test #21:

score: 0
Accepted
time: 22ms
memory: 12820kb

input:

100000 33276622596
614684 401795 484562
138134 379845 472752
103466 162056 593369
972197 201827 250891
732656 317090 812259
818778 15099 332517
786688 357678 409652
761432 50454 843067
866412 738050 831778
167046 125944 675862
592604 525479 592023
693376 299606 991256
135136 9359 848986
610066 64138...

output:

16632077269836196

result:

ok single line: '16632077269836196'

Test #22:

score: 0
Accepted
time: 25ms
memory: 13464kb

input:

100000 33276622596
6 401795 484562
6 379845 472752
999992 162056 593369
999993 201827 250891
2 317090 812259
2 15099 332517
6 357678 409652
6 50454 843067
4 738050 831778
10 125944 675862
4 525479 592023
999999 299606 991256
999993 9359 848986
999994 641380 733867
3 249084 734251
3 30083 395670
9999...

output:

16633573366541551

result:

ok single line: '16633573366541551'

Test #23:

score: 0
Accepted
time: 22ms
memory: 12900kb

input:

100000 714200
829184 1 7
254316 8 10
293723 10 10
200173 3 10
832598 6 10
516217 2 3
576064 5 9
626015 5 7
797096 1 3
297561 7 9
580487 1 10
971989 1 6
48861 2 9
672368 3 7
860889 2 4
236484 1 10
703037 3 10
564708 4 7
735042 6 8
694950 4 4
30648 7 9
943649 4 7
100913 3 10
212727 2 10
706335 4 7
520...

output:

521973117716

result:

ok single line: '521973117716'

Test #24:

score: 0
Accepted
time: 23ms
memory: 13312kb

input:

100000 66619682922
614684 401795 484562
138134 379845 472752
103466 162056 593369
972197 201827 250891
732656 317090 812259
818778 15099 332517
786688 357678 409652
761432 50454 843067
866412 738050 831778
167046 125944 675862
592604 525479 592023
693376 299606 991256
135136 9359 848986
610066 64138...

output:

49973831031956598

result:

ok single line: '49973831031956598'

Extra Test:

score: 0
Extra Test Passed