QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#294272#5074. Vision Testucup-team087#AC ✓909ms77096kbC++2021.3kb2023-12-30 11:08:322023-12-30 11:08:32

Judging History

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

  • [2023-12-30 11:08:32]
  • 评测
  • 测评结果:AC
  • 用时:909ms
  • 内存:77096kb
  • [2023-12-30 11:08:32]
  • 提交

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

#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>;

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));
}

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<<"}";
}

ll read(){
	ll i;
	cin>>i;
	return i;
}

vi readvi(int n,int off=0){
	vi v(n);
	rep(i,n)v[i]=read()+off;
	return v;
}

pi readpi(int off=0){
	int a,b;cin>>a>>b;
	return pi(a+off,b+off);
}

template<class t>
void print_single(t x,int suc=1){
	cout<<x;
	if(suc==1)
		cout<<"\n";
	if(suc==2)
		cout<<" ";
}

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?suc:2);
}

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

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?suc:2);
}

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...);
}

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 t> void mkuni(vc<t>&v){
	sort(all(v));
	v.erase(unique(all(v)),v.ed);
}

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);
}

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

template<class t,class u>
int lwb(const vc<t>&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);
}

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> readTree(int n){
	return readGraph(n,n-1);
}

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>
pair<t,u> operator-(pair<t,u> a){return mp(-a.a,-a.b);}
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+(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>
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 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);
}

bool dbg=false;

int sgn(int a){
	return a>0?1:(a<0?-1:0);
}

int rabs(pi a){return max(abs(a.a),abs(a.b));}

int dot(pi a,pi b){
	return a.a*b.a+a.b*b.b;
}

pi add(pi a,pi b){
	return pi(a.a+b.a,a.b+b.b);
}
pi sub(pi a,pi b){
	return pi(a.a-b.a,a.b-b.b);
}

int crs(pi a,pi b){
	return a.a*b.b-a.b*b.a;
}

int ccw(pi a,pi b){
	return sgn(crs(a,b));
}

int ccw(pi a,pi b,pi c){
	return sgn(crs(sub(b,a),sub(c,a)));
}
//同じ x 座標には複数存在しないようにする
//stress-tested
//EC Final 2021 K (>=, no points on edges)
void add_convex_upper(vc<pi>&ps,pi v){
	if(si(ps)){
		assert(ps.back()<=v);
		if(ps.back().a==v.a)ps.pop_back();
	}
	while(si(ps)>=2&&ccw(ps[si(ps)-2],ps[si(ps)-1],v)>=0)ps.pop_back();
	ps.pb(v);
}
vc<pi> cat_convex_upper(vc<pi> a,const vc<pi>&b){
	for(auto v:b)add_convex_upper(a,v);
	return a;
}
//(a.a/a.b), (b.a/b.b) を比較
//分母が正のケースだけ stress-tested
int fcmp(pi a,pi b){
	if(a.b<0)a=-a;
	if(b.b<0)b=-b;
	int z=a.a*b.b-a.b*b.a;
	return z<0?-1:z==0?0:1;
}

//UCUP 2023-3 F
template<class F>
void segeasy(int s,int l,int r,F f){
	for(l+=s,r+=s;l<r;l>>=1,r>>=1){
		if(l&1)f(l);
		if(r&1)f(r-1);
		l++; //ceil l
	}
}
//include geo/pi
//点集合 (ソート済み) で init
//query(l,r,p,q)
//[l,r) 内で (p,q) との内積最大の点を返す
//内積最大の中でどの点を返しているかは謎です!すまん
//q>=0 が必要
//query をまとめて処理することでオーダーを落としている
//stress-tested
//EC Final 2021 K
struct CHT_Query{
	int n,s;
	vc<pi> rw;
	vvc<pi> z;
	vi head;
	CHT_Query(const vc<pi>&ps){
		assert(is_sorted(all(ps)));
		n=si(ps);
		s=minp2(n);
		rw=ps;
		z.resize(s*2);
		rep(i,n)z[s+i].pb(ps[i]);
		gnr(i,1,s)z[i]=cat_convex_upper(z[i*2],z[i*2+1]);
		head.resize(2*s);
	}
	struct Query{
		int l,r;
		pi dir;
	};
	vc<Query> qs;
	void add_query(int l,int r,int p,int q){
		assert(q>=0);
		assert(0<=l&&l<r&&r<=n);
		qs.pb({l,r,pi(p,q)});
	}
	vc<pi> calc(){
		vc<pi> ans(si(qs));
		vi idx;
		rep(qid,si(qs)){
			auto [l,r,dir]=qs[qid];
			if(dir.b==0){
				if(dir.a<=0)ans[qid]=rw[l];
				else ans[qid]=rw[r-1];
			}else{
				idx.pb(qid);
			}
		}
		soin(idx,[&](int i,int j){return ccw(qs[i].dir,qs[j].dir)<0;});
		const pi none=pi(-inf,-inf);
		fila(head,0);
		for(auto qid:idx){
			auto [l,r,dir]=qs[qid];
			auto eval=[&](pi v){return dot(v,dir);};
			pi cur=none;
			auto upd=[&](pi v){
				if(cur==none||dot(cur,dir)<dot(v,dir))cur=v;
			};
			segeasy(s,l,r,[&](int i){
				if(z[i].empty())return;
				int&j=head[i];
				while(j+1<si(z[i])&&eval(z[i][j])<eval(z[i][j+1]))j++;
				upd(z[i][j]);
			});
			ans[qid]=cur;
		}
		qs.clear();
		return ans;
	}
};

//f(x) が ] -1 | 0 | 1 [ みたいな形をしているとする
//f(0)<=0 を仮定
//f(inf)=1 を仮定
//f(x)=0 なる x を見つけてくる.
//分母最小,その中で分子最小を見つける
//f(x)=0 なる call の中で最後のやつが答えになっている
//stress-tested
template<class F>
pi frac_bisect(F func){
	pi lw(0,1),up(1,0);
	int f;
	auto load=[&](pi v){
		f=func(v);
		assert(inc(-1,f,1));
	};
	load(lw);
	assert(f<=0);
	if(f==0)return lw;
	auto mid=[&](int a,int b){
		return pi(lw.a*a+up.a*b,lw.b*a+up.b*b);
	};
	load(mid(1,1));
	while(1){
		//func(lw)==-1
		//func(up)==1
		if(f==0)return mid(1,1);
		else if(f==-1){
			int w=1;
			while(1){
				w*=2;
				load(mid(1,w));
				if(f>-1)break;
			}
			int l=w/2,r=w,rf=f;
			while(r-l>1){
				const int v=(l+r)/2;
				load(mid(1,v));
				if(f==-1)l=v;
				else{
					r=v;
					rf=f;
				}
			}
			lw=mid(1,l);
			f=rf;
		}else if(f==1){
			int w=1;
			while(1){
				w*=2;
				load(mid(w,1));
				if(f<1)break;
			}
			int l=w/2,r=w,rf=f;
			while(r-l>1){
				const int v=(l+r)/2;
				load(mid(v,1));
				if(f==1)l=v;
				else{
					r=v;
					rf=f;
				}
			}
			up=mid(l,1);
			f=rf;
		}else assert(0);
	}
}

//有理数二分探索を並列化するためのライブラリ
//stress-tested
//EC Final 2021 K
struct Frac_Bisector{
	pi lw=pi(0,1),up=pi(1,0),ans;
	pi mid(int a,int b){
		return pi(lw.a*a+up.a*b,lw.b*a+up.b*b);
	}
	int phase=0,w,l,r,rf;
	//解がすでに求まっているかどうか返す
	//true: v に答えを入れる
	//false: v に次にクエリすべき有理数を入れる
	//phase=-1; すでに解は決定
	//phase 0;
	bool determined(pi&v){
		if(phase==-1){
			v=ans;
			return true;
		}else if(phase==0){
			//check if (0,1) is ok
			v=lw;
			return false;
		}else if(phase==1){
			//check mid(lw,up);
			v=mid(1,1);
			return false;
		}else if(phase==2){
			//f(mid(1,w))==-1
			//find w s.t. f(mid(1,w))>-1
			w*=2;
			v=mid(1,w);
			return false;
		}else if(phase==3){
			//f(mid(w,1))==1
			//find w s.t. f(mid(w,1))<1
			w*=2;
			v=mid(w,1);
			return false;
		}else if(phase==4){
			//f(mid(1,l))==-1
			//f(mid(1,r))>-1
			//find max t s.t f(mif(1,t))==-1
			//r の結果を保存して微小に高速化している
			if(r-l==1){
				if(rf==0){
					v=mid(1,r);
					return true;
				}else if(rf==1){
					lw=mid(1,l);
					w=2;
					v=mid(w,1);
					phase=3;
					return false;
				}else assert(false);
			}else{
				v=mid(1,(l+r)/2);
				return false;
			}
		}else if(phase==5){
			//f(mid(l,1))==1
			//f(mid(r,1))<1
			//find max t s.t f(mif(t,1))==1
			//r の結果を保存して微小に高速化している
			if(r-l==1){
				if(rf==0){
					v=mid(r,1);
					return true;
				}else if(rf==-1){
					up=mid(l,1);
					w=2;
					v=mid(1,w);
					phase=2;
					return false;
				}else assert(false);
			}else{
				v=mid((l+r)/2,1);
				return false;
			}
		}else{
			assert(false);
		}
	}
	void tell(int f){
		assert(phase!=-1);
		assert(inc(-1,f,1));
		if(phase==0){
			if(f==-1){
				phase=1;
			}else if(f==0){
				phase=-1;
				ans=lw;
			}else assert(false);
		}else if(phase==1){
			if(f==-1){
				phase=2;
				w=1;
			}else if(f==0){
				phase=-1;
				ans=mid(1,1);
			}else if(f==1){
				phase=3;
				w=1;
			}
		}else if(phase==2){
			if(f>-1){
				l=w/2;
				r=w;
				rf=f;
				phase=4;
			}
		}else if(phase==3){
			if(f<1){
				l=w/2;
				r=w;
				rf=f;
				phase=5;
			}
		}else if(phase==4){
			if(f==-1)l=(l+r)/2;
			else{
				r=(l+r)/2;
				rf=f;
			}
		}else if(phase==5){
			if(f==1)l=(l+r)/2;
			else{
				r=(l+r)/2;
				rf=f;
			}
		}else assert(false);
	}
};

void slv(){
	int n;cin>>n;
	vc<pi> ps(n);
	rep(i,n){
		ps[i]=pi(i,read());
	}
	vc<pi> psrev(n);
	rep(i,n)psrev[i]=-(ps[n-1-i]+pi(0,1));
	
	CHT_Query maxcht(ps);
	CHT_Query mincht(psrev);
	
	int q;cin>>q;
	vc<pi> lr(q);
	rep(i,q){
		int l,r;cin>>l>>r;
		l--;
		lr[i]=pi(l,r);
	}
	vc<pi> tilt(q);
	vc<Frac_Bisector> fb(q);
	vc<tuple<int,int,int>> ans(q);
	vc<pi> curlow(q,pi(-1,1));
	vc<pi> curhigh(q,pi(1,0));
	while(1){
		vi query_idx,known_idx;
		rep(i,q)if(!fb[i].determined(tilt[i])){
			auto [l,r]=lr[i];
			if(fcmp(curlow[i],tilt[i])<0&&fcmp(tilt[i],curhigh[i])<0){
				query_idx.pb(i);
				maxcht.add_query(l,r,-tilt[i].a,tilt[i].b);
				mincht.add_query(n-r,n-l,-tilt[i].a,tilt[i].b);
			}else{
				known_idx.pb(i);
			}
		}
		if(query_idx.empty()&&known_idx.empty())break;
		vc<pi> maxxy=maxcht.calc();
		vc<pi> minxy=mincht.calc();
		rep(ii,si(query_idx)){
			int i=query_idx[ii];
			pi lw=maxxy[ii],up=-minxy[ii];
			pi dir(-tilt[i].a,tilt[i].b);
			int lwval=dot(lw,dir);
			int upval=dot(up,dir);
			if(lwval<upval){
				auto [a,c]=tilt[i];
				ans[i]=mt(a,lwval,c);
				fb[i].tell(0);
			}else{
				if(lw.a<up.a){
					fb[i].tell(1);
					pi v=up-lw;
					swap(v.a,v.b);
					if(fcmp(v,curhigh[i])<0)curhigh[i]=v;
				}else{
					fb[i].tell(-1);
					pi v=lw-up;
					swap(v.a,v.b);
					if(fcmp(curlow[i],v)<0)curlow[i]=v;
				}
			}
		}
		for(auto i:known_idx){
			if(fcmp(tilt[i],curlow[i])<=0)
				fb[i].tell(-1);
			else if(fcmp(curhigh[i],tilt[i])<=0)
				fb[i].tell(1);
			else assert(false);
		}
	}
	rep(i,q){
		auto [l,r]=lr[i];
		auto [a,b,c]=ans[i];
		b+=a*l;
		print(a,b,c);
	}
}

signed main(){
	cin.tie(0);
	ios::sync_with_stdio(0);
	cout<<fixed<<setprecision(20);
	
	if(0){//test CHT Query
		const int nqmax=10;
		const int vmax=10;
		const int tmax=10000;
		rng(n,1,nqmax+1){
			rng(qnum,1,nqmax+1){
				cerr<<"N "<<n<<" Q "<<qnum<<endl;
				rep(t,tmax){
					vc<pi> ps(n);
					rep(i,n){
						ps[i].a=rand_int(0,vmax);
						ps[i].b=rand_int(0,vmax);
					}
					soin(ps);
					CHT_Query cq(ps);
					vc<tuple<int,int,int,int>> qs(qnum);
					rep(i,qnum){
						int p=rand_int(-vmax,vmax);
						int q=rand_int(0,vmax);
						int l=rand_int(n);
						int r=rand_int(l+1,n);
						cq.add_query(l,r,p,q);
						qs[i]=mt(l,r,p,q);
					}
					vc<pi> best=cq.calc();
					rep(i,qnum){
						auto [l,r,p,q]=qs[i];
						int god=-inf;
						rng(j,l,r)chmax(god,dot(ps[j],pi(p,q)));
						int ans=dot(best[i],pi(p,q));
						if(god!=ans){
							cerr<<n<<" "<<qnum<<endl;
							cerr<<ps<<endl;
							cerr<<qs<<endl;
							cerr<<i<<" "<<god<<" "<<best[i]<<" "<<ans<<endl;
							/*cerr<<cq.z[1]<<endl;
							cerr<<cq.z[2]<<endl;
							cerr<<cq.z[3]<<endl;
							cerr<<ccw(pi(0,7),pi(0,8),pi(1,8))<<endl;*/
						}
						assert(god==ans);
					}
				}
			}
		}
		return 0;
	}
	
	if(0){//test frac_bisect
		const int vmax=100;
		const int tmax=10000000;
		auto getrandf=[&](){
			int num=rand_int(0,vmax);
			int den=rand_int(1,vmax);
			return pi(num,den);
		};
		int eval_cnt=0;
		rep(t,tmax){
			if(t%10000==0)cerr<<t<<endl;
			pi lw=getrandf();
			pi up=getrandf();
			if(fcmp(lw,up)>0)swap(lw,up);
			
			pi god(-1,-1);
			rng(den,1,vmax*2+1)rep(num,vmax*2+1){
				pi z(num,den);
				if(fcmp(lw,z)<=0&&fcmp(z,up)<=0){
					god=z;
					goto foundgod;
				}
			}
			foundgod:;
			assert(god!=pi(-1,-1));
			pi last;
			auto f=[&](pi v){
				eval_cnt++;
				if(fcmp(v,lw)<0)return -1;
				if(fcmp(up,v)<0)return 1;
				last=v;
				return 0;
			};
			//pi ans=frac_bisect(f);
			pi ans;
			Frac_Bisector fb;
			while(!fb.determined(ans))
				fb.tell(f(ans));
			ans=last;
			
			if(god!=ans){
				cerr<<lw<<" "<<up<<endl;
				cerr<<god<<" "<<ans<<endl;
			}
			assert(god==ans);
		}
		
		cerr<<"Eval Cnt "<<eval_cnt<<endl;
		return 0;
	}
	
	if(dbg){
		while(1)slv();
	}else{
		int t;cin>>t;rep(_,t)
		slv();
	}
}

详细

Test #1:

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

input:

3
5
1 1 2 2 2
4
1 5
1 1
3 5
2 3
5
1 2 3 4 6
3
1 5
2 4
3 5
3
0 3 5
1
1 3

output:

1 4 3
0 1 1
0 2 1
1 1 1
5 4 4
1 2 1
3 6 2
5 1 2

result:

ok 24 numbers

Test #2:

score: 0
Accepted
time: 211ms
memory: 3564kb

input:

20000
5
216985264 261263380 305541495 349819610 394097726
5
2 3
3 5
1 2
1 1
5 5
5
375382625 514874812 654366999 793859186 933351373
5
3 5
2 5
2 4
4 4
1 2
5
4203556 117160178 230116801 343073423 456030045
5
2 5
1 1
3 4
2 4
5 5
5
925374406 933391410 941408414 949425418 957442422
5
3 4
5 5
2 3
1 3
4 5
...

output:

44278115 261263380 1
88556231 611082990 2
44278116 216985264 1
0 216985264 1
0 394097726 1
139492187 654366999 1
139492187 514874812 1
139492187 514874812 1
0 793859186 1
139492187 375382625 1
338869867 351480536 3
0 4203556 1
112956622 230116801 1
225913245 234320357 2
0 456030045 1
8017004 9414084...

result:

ok 300000 numbers

Test #3:

score: 0
Accepted
time: 211ms
memory: 3560kb

input:

20000
5
663398562 733306156 803213750 873121344 943028938
5
1 2
3 3
2 4
1 1
3 5
5
90107073 216544148 342981224 469418300 595855376
5
1 1
5 5
2 3
3 5
3 4
5
578795185 603695239 628595293 653495347 678395402
5
4 5
1 4
4 4
4 5
2 4
5
99770585 174616657 249462729 324308801 399154873
5
1 2
4 5
1 4
1 5
1 4
...

output:

69907594 663398562 1
0 803213750 1
69907594 733306156 1
0 663398562 1
69907594 803213750 1
0 90107073 1
0 595855376 1
126437076 216544148 1
126437076 342981224 1
126437076 342981224 1
24900055 653495347 1
24900054 578795185 1
0 653495347 1
24900055 653495347 1
24900054 603695239 1
74846072 99770585 ...

result:

ok 300000 numbers

Test #4:

score: 0
Accepted
time: 193ms
memory: 3536kb

input:

10000
10
34013891 48852155 63690419 78528682 93366946 108205209 123043473 137881737 152720000 167558264
10
1 8
6 9
7 7
2 6
2 3
8 10
5 7
3 8
10 10
5 6
10
65005189 120529926 176054663 231579399 287104136 342628873 398153610 453678347 509203084 564727820
10
7 10
3 4
8 9
6 9
3 7
4 6
5 6
2 8
1 6
2 5
10
2...

output:

74191318 170069459 5
44514791 324615629 3
0 123043473 1
29676527 97704311 2
14838264 48852155 1
29676527 275763474 2
29676527 186733892 2
74191318 318452095 5
0 167558264 1
14838263 93366946 1
166574210 1194460832 3
55524736 176054663 1
55524737 453678347 1
55524737 342628873 1
222098947 704218652 4...

result:

ok 300000 numbers

Test #5:

score: 0
Accepted
time: 188ms
memory: 3852kb

input:

10000
10
371965130 420545079 469125028 517704977 566284926 614864875 663444823 712024772 760604721 809184670
10
8 9
4 4
5 7
4 6
5 6
9 10
7 7
7 7
6 9
4 7
10
238386910 302937632 367488355 432039077 496589800 561140523 625691245 690241968 754792691 819343413
10
6 6
2 10
2 8
2 10
1 3
2 7
1 4
6 7
6 8
4 9...

output:

48579949 712024772 1
0 517704977 1
97159897 1132569853 2
48579949 517704977 1
48579949 566284926 1
48579949 760604721 1
0 663444823 1
0 663444823 1
145739846 1844594625 3
145739846 1553114933 3
0 561140523 1
193652168 908812897 3
193652168 908812897 3
193652168 908812897 3
129101445 476773820 2
1936...

result:

ok 300000 numbers

Test #6:

score: 0
Accepted
time: 217ms
memory: 3728kb

input:

1000
100
23443467 30975337 38507207 46039077 53570947 61102817 68634687 76166557 83698427 91230297 98762167 106294037 113825907 121357777 128889648 136421518 143953388 151485258 159017128 166548998 174080868 181612738 189144608 196676478 204208348 211740218 219272088 226803958 234335828 241867698 24...

output:

7531870 30975337 1
7531870 339782009 1
150637401 3782892160 20
210892361 1499986534 28
7531870 550674370 1
143105531 3736853082 19
173233011 3830626954 23
75318701 5205468896 10
210892361 2976233061 28
210892361 5506941393 28
210892361 2554448339 28
210892361 14786205277 28
210892361 7615865003 28
7...

result:

ok 300000 numbers

Test #7:

score: 0
Accepted
time: 213ms
memory: 3984kb

input:

1000
100
531924329 535185195 538446062 541706928 544967794 548228660 551489527 554750393 558011259 561272125 564532992 567793858 571054724 574315590 577576457 580837323 584098189 587359055 590619922 593880788 597141654 600402520 603663387 606924253 610185119 613445985 616706852 619967718 623228584 6...

output:

9782599 2300120097 3
13043465 2232045038 4
185869376 31063164300 57
55434726 11426406834 17
3260866 531924329 1
94565121 19208410410 29
13043465 2310305828 4
13043465 2323349293 4
13043465 2440740478 4
6521733 1566022060 2
94565121 18262759200 29
68478191 14731276866 21
6521733 1435587411 2
29347796...

result:

ok 300000 numbers

Test #8:

score: 0
Accepted
time: 305ms
memory: 4532kb

input:

100
1000
213684368 214116070 214547773 214979476 215411178 215842881 216274583 216706286 217137989 217569691 218001394 218433097 218864799 219296502 219728204 220159907 220591610 221023312 221455015 221886717 222318420 222750123 223181825 223613528 224045230 224476933 224908636 225340338 225772041 2...

output:

134691215 103440224601 312
71230931 59761361035 165
134691215 102497386096 312
113537787 57788517879 263
5612134 2862078796 13
50077503 54683656021 116
21153428 13960849665 49
92384359 70949384823 214
50077503 39960870135 116
248229002 174748373186 575
113537787 104679623911 263
21153428 14341611369...

result:

ok 300000 numbers

Test #9:

score: 0
Accepted
time: 302ms
memory: 4264kb

input:

100
1000
536150841 536290195 536429549 536568904 536708258 536847613 536986967 537126321 537265676 537405030 537544385 537683739 537823093 537962448 538101802 538241157 538380511 538519865 538659220 538798574 538937929 539077283 539216637 539355992 539495346 539634701 539774055 539913409 540052764 5...

output:

13517377 55277836821 97
13517377 52493257159 97
13517377 52966365354 97
12123833 54889329601 87
13517377 55575219115 97
11427061 51300542110 82
13517377 54480311578 97
696772 2905114792 5
13517377 53088021747 97
13517377 56899922061 97
26337982 118399521298 189
13517377 59833192870 97
10730289 50447...

result:

ok 300000 numbers

Test #10:

score: 0
Accepted
time: 490ms
memory: 11192kb

input:

10
10000
36428329 36523074 36617818 36712563 36807308 36902052 36996797 37091541 37186286 37281031 37375775 37470520 37565265 37660009 37754754 37849498 37944243 38038988 38133732 38228477 38323221 38417966 38512711 38607455 38702200 38796945 38891689 38986434 39081178 39175923 39270668 39365412 394...

output:

38940038 254959497643 411
493808949 1471298676601 5212
8432271 25680394471 89
3221317 3799510231 34
55804580 41155302883 589
55804580 54883229563 589
55804580 74805464623 589
47372309 45405870172 500
55804580 193948242923 589
47372309 369385091411 500
214786049 1335000474945 2267
55804580 6051949214...

result:

ok 300000 numbers

Test #11:

score: 0
Accepted
time: 486ms
memory: 11228kb

input:

10
10000
57158380 57205933 57253487 57301040 57348593 57396146 57443700 57491253 57538806 57586359 57633913 57681466 57729019 57776572 57824126 57871679 57919232 57966785 58014339 58061892 58109445 58156999 58204552 58252105 58299658 58347212 58394765 58442318 58489871 58537425 58584978 58632531 586...

output:

261875805 537365635917 5507
4565113 34361544244 96
21731840 99118630472 457
48028793 232890972421 1010
48028793 291534128674 1010
261875805 663589773927 5507
261875805 729844352592 5507
26296953 145290312255 553
165818219 478051699104 3487
21731840 65151764551 457
48028793 224581991232 1010
69760633...

result:

ok 300000 numbers

Test #12:

score: 0
Accepted
time: 697ms
memory: 74672kb

input:

1
100000
293175446 293176488 293177531 293178573 293179616 293180658 293181701 293182743 293183786 293184828 293185871 293186913 293187956 293188998 293190041 293191083 293192126 293193168 293194211 293195253 293196296 293197338 293198381 293199423 293200466 293201508 293202551 293203593 293204636 2...

output:

11495637 3725502665004 11027
43241818 13599279619796 41479
4380581 1631261369531 4202
19705317 5819565486583 18902
9306389 2879980327594 8927
18610693 5824676179860 17852
21894565 6471457729859 21002
43241818 12532806662462 41479
547312 167902572817 525
21347253 7065379449576 20477
21347253 68178153...

result:

ok 300000 numbers

Test #13:

score: 0
Accepted
time: 885ms
memory: 74104kb

input:

1
100000
231322527 231329943 231337358 231344774 231352190 231359606 231367022 231374437 231381853 231389269 231396685 231404100 231411516 231418932 231426348 231433763 231441179 231448595 231456011 231463426 231470842 231478258 231485674 231493090 231500505 231507921 231515337 231522753 231530168 2...

output:

38739949 4653533808025 5224
86482635 7018528724969 11662
235576562 15364150828060 31767
235576562 10692667603600 31767
235576562 10264389413884 31767
86482635 3750868844130 11662
235576562 9308890878412 31767
322059197 20986134907441 43429
235576562 15137290598854 31767
9002737 829830456034 1214
313...

result:

ok 300000 numbers

Test #14:

score: 0
Accepted
time: 836ms
memory: 75324kb

input:

1
100000
120515621 120522276 120528930 120535585 120542240 120548894 120555549 120562203 120568858 120575513 120582167 120588822 120595477 120602131 120608786 120615440 120622095 120628750 120635404 120642059 120648714 120655368 120662023 120668677 120675332 120681987 120688641 120695296 120701950 1...

output:

190701389 6500261560665 28657
117859940 10305799675413 17711
17195533 1440935342536 2584
190701389 5073433768167 28657
190701389 10017367277992 28657
117859940 2963243273355 17711
10627425 592224666606 1597
190701389 7722276061377 28657
190701389 4331033260790 28657
117859940 6393438967114 17711
499...

result:

ok 300000 numbers

Test #15:

score: 0
Accepted
time: 539ms
memory: 71000kb

input:

1
100000
554032715 554035774 554038833 554041892 554044951 554048010 554051069 554054128 554057187 554060246 554063305 554066364 554069423 554072482 554075541 554078600 554081659 554084718 554087777 554090836 554093895 554096954 554100013 554103072 554106131 554109190 554112249 554115308 554118367 5...

output:

94813706 23346133246989 30995
3059 809254263 1
167565903 32116456762468 54778
24768724 5903516910645 8097
3059 776721798 1
3059 565409136 1
3059 758918418 1
189465284 34957411578325 61937
3059 637613772 1
3059 565632443 1
121160873 25060264242688 39608
150882117 29741676137008 49324
128303638 262380...

result:

ok 300000 numbers

Test #16:

score: 0
Accepted
time: 542ms
memory: 71012kb

input:

1
100000
34043317 34050815 34058313 34065811 34073309 34080807 34088305 34095803 34103301 34110799 34118297 34125795 34133293 34140791 34148289 34155787 34163285 34170783 34178281 34185779 34193277 34200775 34208273 34215771 34223269 34230767 34238265 34245763 34253261 34260759 34268257 34275755 342...

output:

311496911 8615792711519 41544
7498 154191269 1
374727545 7204631644241 49977
7498 133481793 1
477112735 2658147641791 63632
7498 520041182 1
7498 346080085 1
7498 498117031 1
162511651 9253302918069 21674
226169671 9036003068102 30164
257383845 8976601329241 34327
236861819 8909159388479 31590
7498 ...

result:

ok 300000 numbers

Test #17:

score: 0
Accepted
time: 409ms
memory: 71344kb

input:

1
100000
50230902 50237738 50244574 50251410 50258246 50265082 50271918 50278754 50285590 50292426 50299262 50306098 50312934 50319770 50326606 50333442 50340278 50347114 50353950 50360786 50367622 50374458 50381294 50388130 50394966 50401802 50408638 50415474 50422310 50429146 50435982 50442818 504...

output:

6836001 449029528885 1000
6836001 162272958937 1000
6836001 96585825328 1000
6836001 143720052223 1000
3554721 288931221280 520
2912137 254447906004 426
6836001 50695750615 1000
6836001 370887201454 1000
6836001 180969421672 1000
6836001 133937734792 1000
6836001 118481536531 1000
6836001 1952840077...

result:

ok 300000 numbers

Test #18:

score: 0
Accepted
time: 583ms
memory: 71460kb

input:

1
100000
586392761 586396443 586400125 586403807 586407489 586411171 586414853 586418535 586422217 586425899 586429581 586433263 586436945 586440627 586444309 586447991 586451673 586455355 586459037 586462719 586466401 586470083 586473765 586477447 586481129 586484811 586488493 586492175 586495857 5...

output:

66279700 11607912609722 18001
2021419 452020037733 549
121509715 21629004097207 33001
33141691 7743432211116 9001
132555718 27357811670168 36001
3682001 720340275474 1000
92053707 15845596897819 25001
184103732 30856017779938 50001
158329725 26856721049272 43001
3682001 631287399289 1000
62597699 14...

result:

ok 300000 numbers

Test #19:

score: 0
Accepted
time: 909ms
memory: 75360kb

input:

1
100000
97920250 97925338 97930427 97935515 97940603 97945692 97950780 97955868 97960956 97966045 97971133 97976221 97981309 97986398 97991486 97996574 98001663 98006751 98011839 98016927 98022016 98027104 98032192 98037280 98042369 98047457 98052545 98057634 98062722 98067810 98072898 98077987 980...

output:

156978207 4813471800784 30851
19096276 2060207701863 3753
452856 37070480687 89
90367669 3441319433792 17760
90367669 3719200015967 17760
90367669 6655516684785 17760
4660855 313429972238 916
247345876 8289626958411 48611
247345876 11901618785639 48611
23757131 1120987647898 4669
90367669 7816650863...

result:

ok 300000 numbers

Test #20:

score: 0
Accepted
time: 871ms
memory: 75312kb

input:

1
100000
661205074 661207021 661208967 661210914 661212860 661214807 661216753 661218700 661220646 661222593 661224540 661226486 661228433 661230379 661232326 661234272 661236219 661238165 661240112 661242058 661244005 661245951 661247898 661249845 661251791 661253738 661255684 661257631 661259577 6...

output:

16763613 6084638831340 8612
57397661 21172793543560 29487
16763613 6112466428920 8612
16763613 6067942272792 8612
74161274 26454515279295 38099
16763613 7141618158218 8612
16763613 6089584097175 8612
7106822 3048926350335 3651
40634048 14987626040483 20875
2549969 881208165040 1310
40634048 14083518...

result:

ok 300000 numbers

Test #21:

score: 0
Accepted
time: 880ms
memory: 75056kb

input:

1
100000
348665 358568 368471 378375 388278 398182 408085 417988 427892 437795 447699 457602 467506 477409 487312 497216 507119 517023 526926 536829 546733 556636 566540 576443 586347 596250 606153 616057 625960 635864 645767 655670 665574 675477 685381 695284 705187 715091 724994 734898 744801 7547...

output:

169893067 2931539963345 17155
261776942 4097386767519 26433
169893067 11011144550663 17155
431670009 5855261165672 43588
261776942 324395702473 26433
261776942 9776637524210 26433
431670009 13375384392461 43588
169893067 12542730549668 17155
78009192 3450752721304 7877
22510460 526029078914 2273
138...

result:

ok 300000 numbers

Test #22:

score: 0
Accepted
time: 888ms
memory: 77096kb

input:

1
100000
115991978 115997547 116003117 116008686 116014256 116019826 116025395 116030965 116036535 116042104 116047674 116053243 116058813 116064383 116069952 116075522 116081092 116086661 116092231 116097800 116103370 116108940 116114509 116120079 116125648 116131218 116136788 116142357 116147927 1...

output:

54621265 3383013533376 9807
15132658 418869442426 2717
115151897 5312974115959 20675
215171136 13095279348527 38633
24355949 2454612822546 4373
718481 50988321088 129
69753923 5077306634570 12524
84886581 3142062598019 15241
215171136 4903499029871 38633
115151897 8827525164295 20675
100019239 64147...

result:

ok 300000 numbers

Test #23:

score: 0
Accepted
time: 844ms
memory: 74356kb

input:

1
100000
907299661 907300462 907301263 907302064 907302866 907303667 907304468 907305269 907306071 907306872 907307673 907308474 907309275 907310077 907310878 907311679 907312480 907313281 907314083 907314884 907315685 907316486 907317288 907318089 907318890 907319691 907320492 907321294 907322095 9...

output:

1929327 2266631211674 2408
6386489 7435967875026 7971
6386489 7679567724955 7971
9326950 11063357477790 11641
3446028 4108192570214 4301
15713439 18425405503547 19612
15713439 18186168394772 19612
918193 1062488852180 1146
9326950 10742696936792 11641
15713439 18364390219910 19612
15713439 179403159...

result:

ok 300000 numbers

Test #24:

score: 0
Accepted
time: 830ms
memory: 74892kb

input:

1
100000
25932475 25933910 25935344 25936778 25938213 25939647 25941081 25942516 25943950 25945384 25946819 25948253 25949688 25951122 25952556 25953991 25955425 25956859 25958294 25959728 25961162 25962597 25964031 25965465 25966900 25968334 25969768 25971203 25972637 25974071 25975506 25976940 259...

output:

13051153 822452311004 9099
11384438 1124629898244 7937
13051153 1121480328540 9099
13051153 792839244847 9099
13051153 265898942472 9099
13051153 820011745393 9099
50537897 3331336769737 35234
13051153 1259861703800 9099
13051153 1325535105696 9099
13051153 465477174148 9099
13051153 590898754478 90...

result:

ok 300000 numbers

Test #25:

score: 0
Accepted
time: 573ms
memory: 72516kb

input:

1
100000
496160564 496164632 496168700 496172768 496176836 496180904 496184973 496189041 496193109 496197177 496201245 496205313 496209381 496213449 496217517 496221586 496225654 496229722 496233790 496237858 496241926 496245994 496250062 496254130 496258199 496262267 496266335 496270403 496274471 4...

output:

23257392 4314371148790 5717
23257392 3235786337398 5717
23257392 2876296829254 5717
23257392 3066216692326 5717
23257392 3411309874822 5717
23257392 3215761722886 5717
19929677 4109606454515 4899
23257392 3788986663510 5717
23257392 3770148175990 5717
1570291 292740502207 386
23257392 2918811341830 ...

result:

ok 300000 numbers

Test #26:

score: 0
Accepted
time: 413ms
memory: 73140kb

input:

1
100000
201910699 201913818 201916937 201920056 201923175 201926294 201929413 201932532 201935651 201938770 201941889 201945008 201948127 201951246 201954365 201957484 201960603 201963722 201966841 201969960 201973079 201976198 201979317 201982436 201985555 201988674 201991793 201994912 201998031 2...

output:

2810220 201581839728 901
2810220 333844844028 901
2810220 305798848428 901
2810220 308417973468 901
2810220 249068937288 901
2810220 194612494128 901
2810220 211850383608 901
2810220 217841772648 901
2810220 255139012488 901
2810220 245612366688 901
2810220 211274288508 901
2810220 267981717888 901
...

result:

ok 300000 numbers

Test #27:

score: 0
Accepted
time: 275ms
memory: 71664kb

input:

1
100000
218481045 218483479 218485913 218488347 218490781 218493215 218495649 218498083 218500517 218502951 218505385 218507820 218510254 218512688 218515122 218517556 218519990 218522424 218524858 218527292 218529726 218532160 218534594 218537028 218539462 218541896 218544330 218546764 218549198 2...

output:

189853 18884804354 78
189853 18408653030 78
189853 20465330579 78
189853 21558883859 78
189853 19701741813 78
189853 23138081113 78
189853 17238399138 78
189853 21807401436 78
189853 19989748814 78
189853 32501061514 78
189853 18938912459 78
189853 33145232743 78
189853 28510731160 78
189853 2341412...

result:

ok 300000 numbers

Test #28:

score: 0
Accepted
time: 833ms
memory: 75624kb

input:

1
100000
74836989 74842807 74848624 74854442 74860260 74866078 74871896 74877713 74883531 74889349 74895167 74900985 74906802 74912620 74918438 74924256 74930074 74935891 74941709 74947527 74953345 74959163 74964980 74970798 74976616 74982434 74988252 74994069 74999887 75005705 75011523 75017340 750...

output:

22607943 1235376399362 3886
159238808 3765276064408 27371
159238808 4471977894312 27371
135816374 7614336874084 23345
3903739 237641936745 671
104586462 7162025228866 17977
159238808 3307782969024 27371
159238808 4626917254496 27371
159238808 3042968831320 27371
159238808 2767485693480 27371
1397201...

result:

ok 300000 numbers

Test #29:

score: 0
Accepted
time: 736ms
memory: 73124kb

input:

1
100000
290725681 290731969 290738257 290744545 290750833 290757121 290763409 290769697 290775985 290782273 290788560 290794848 290801136 290807424 290813712 290820000 290826288 290832576 290838864 290845152 290851440 290857728 290864015 290870303 290876591 290882879 290889167 290895455 290901743 2...

output:

133863448 11421178040953 21289
189014761 14562758780446 30060
80963209 7588731490131 12876
189014761 19007629900122 30060
189014761 11171455938584 30060
1125537 58434072733 179
1125537 87825220413 179
1125537 86230334484 179
1125537 141738442712 179
1125537 125295472679 179
167629558 8386107234288 2...

result:

ok 300000 numbers

Test #30:

score: 0
Accepted
time: 356ms
memory: 71364kb

input:

1
100000
346860382 346864249 346868116 346871983 346875850 346879717 346883584 346887451 346891318 346895185 346899052 346902919 346906786 346910653 346914520 346918387 346922254 346926121 346929988 346933855 346937722 346941589 346945456 346949323 346953190 346957057 346960924 346964791 346968658 3...

output:

1426922 177912347455 369
1426922 154435199789 369
1426922 185007003639 369
1426922 161907990303 369
1426922 144565180315 369
1426922 178203439543 369
1426922 211945864077 369
1426922 133841861485 369
1426922 173488889255 369
1426922 165941898797 369
1426922 205163703811 369
1426922 145643933347 369
...

result:

ok 300000 numbers

Test #31:

score: 0
Accepted
time: 389ms
memory: 71540kb

input:

1
100000
63621122 63630249 63639376 63648503 63657630 63666757 63675884 63685011 63694138 63703265 63712392 63721519 63730646 63739773 63748900 63758027 63767154 63776281 63785408 63794535 63803662 63812789 63821916 63831043 63840170 63849297 63858424 63867551 63876678 63885805 63894932 63904059 639...

output:

37393318 1714096617387 4097
37393318 1481285819519 4097
37393318 1958200197291 4097
37393318 3130106783411 4097
37393318 1577311860143 4097
37393318 705037931157 4097
37393318 2678283322017 4097
37393318 1153458600613 4097
37393318 993602166163 4097
37393318 1602514956475 4097
37393318 1421830443899...

result:

ok 300000 numbers

Test #32:

score: 0
Accepted
time: 293ms
memory: 76340kb

input:

1
100000
211819048 211824325 211829601 211834877 211840154 211845430 211850707 211855983 211861260 211866536 211871813 211877089 211882365 211887642 211892918 211898195 211903471 211908748 211914024 211919301 211924577 211929853 211935130 211940406 211945683 211950959 211956236 211961512 211966789 2...

output:

47488 2063936621 9
47488 3297342445 9
47488 5504774637 9
47488 2174916077 9
47488 2389134445 9
47488 2888613229 9
47488 2833004781 9
47488 2610476013 9
47488 5499171053 9
47488 2644429933 9
47488 2058855405 9
47488 5058007533 9
47488 5214907885 9
47488 2327305069 9
47488 3511655789 9
47488 271727652...

result:

ok 300000 numbers

Test #33:

score: 0
Accepted
time: 314ms
memory: 74488kb

input:

1
100000
584688396 584689417 584690439 584691461 584692482 584693504 584694526 584695547 584696569 584697591 584698612 584699634 584700656 584701677 584702699 584703720 584704742 584705764 584706785 584707807 584708829 584709850 584710872 584711894 584712915 584713937 584714959 584715980 584717002 5...

output:

77645 47314773559 76
77645 45830589384 76
77645 45706978544 76
77645 45087449089 76
77645 44656131114 76
77645 46531879024 76
77645 50204332234 76
77645 45305864474 76
77645 45731048494 76
77645 47320208709 76
77645 44459689264 76
77645 46560297094 76
77645 47036571524 76
77645 44446101389 76
77645 ...

result:

ok 300000 numbers

Test #34:

score: 0
Accepted
time: 541ms
memory: 73932kb

input:

1
100000
282043031 282046589 282050146 282053704 282057262 282060820 282064378 282067936 282071494 282075051 282078609 282082167 282085725 282089283 282092841 282096399 282099957 282103514 282107072 282110630 282114188 282117746 282121304 282124862 282128419 282131977 282135535 282139093 282142651 2...

output:

3611231 351781407008 1015
3611231 414923781043 1015
3611231 313419300095 1015
597721 57155369757 168
3611231 294348389184 1015
3611231 435710026679 1015
3611231 331923247739 1015
3611231 581849322787 1015
3611231 334765286536 1015
3611231 327571714384 1015
3611231 473057377681 1015
3611231 322382375...

result:

ok 300000 numbers

Test #35:

score: 0
Accepted
time: 805ms
memory: 75500kb

input:

1
100000
9114825 9122753 9130682 9138610 9146539 9154467 9162396 9170325 9178253 9186182 9194110 9202039 9209967 9217896 9225824 9233753 9241682 9249610 9257539 9265467 9273396 9281324 9289253 9297181 9305110 9313038 9320967 9328896 9336824 9344753 9352681 9360610 9368538 9376467 9384395 9392324 940...

output:

128529680 7092861691142 16211
128529680 4625477424182 16211
47706069 3203826106165 6017
128529680 8184207204022 16211
128529680 1242447716902 16211
128529680 1580223715942 16211
128529680 7666489652982 16211
128529680 2617715292902 16211
128529680 6359214277702 16211
6707551 179015287192 846
3311754...

result:

ok 300000 numbers

Test #36:

score: 0
Accepted
time: 855ms
memory: 74912kb

input:

1
100000
31509588 31516095 31522602 31529110 31535617 31542125 31548632 31555140 31561647 31568155 31574662 31581170 31587677 31594185 31600692 31607199 31613707 31620214 31626722 31633229 31639737 31646244 31652752 31659259 31665767 31672274 31678782 31685289 31691796 31698304 31704811 31711319 317...

output:

67150478 2900771173246 10319
186790127 3974720532854 28704
119639649 4712614369929 18385
186790127 8144436537875 28704
14661307 668703265654 2253
186790127 6320991318101 28704
67150478 1383103219967 10319
186790127 6745565276772 28704
67150478 5879767828761 10319
119639649 6180353583860 18385
231665...

result:

ok 300000 numbers