Submission #1801429


Source Code Expand

#include <bits/stdc++.h>
#define rep(i,n) for(int i=0;i<(int)(n);i++)
#define rep1(i,n) for(int i=1;i<=(int)(n);i++)
#define all(c) c.begin(),c.end()
#define pb push_back
#define fs first
#define sc second
#define show(x) cout << #x << " = " << x << endl
#define chmin(x,y) x=min(x,y)
#define chmax(x,y) x=max(x,y)
using namespace std;
template<class S,class T> ostream& operator<<(ostream& o,const pair<S,T> &p){return o<<"("<<p.fs<<","<<p.sc<<")";}
template<class T> ostream& operator<<(ostream& o,const vector<T> &vc){o<<"sz = "<<vc.size()<<endl<<"[";for(const T& v:vc) o<<v<<",";o<<"]";return o;}
typedef long long ll;

struct UnionFind{
	vector<int> par,rank,mx;
	UnionFind(int N){
		par.assign(N,0);
		rank.assign(N,0);
		mx.assign(N,0);
		rep(i,N) par[i]=i,mx[i]=i;
	}
	int find(int x){
		if(par[x]==x) return x;
		return par[x]=find(par[x]);
	}
	bool same(int x,int y){
		return find(x)==find(y);
	}
	void unite(int x,int y){
		x=find(x),y=find(y);
		if(x==y) return;
		if(rank[x]<rank[y]){
			par[x]=y;
			chmax(mx[y],mx[x]);
		}else{
			par[y]=x;
			chmax(mx[x],mx[y]);
			if(rank[x]==rank[y]) rank[x]++;
		}
	}
};

int N,Q;
ll p[200010];

int main(){
	cin>>N;
	rep(i,N-1) cin>>p[i];

	UnionFind UF(2100000);
	vector<int> v(2100000);
	rep(i,2100000) v[i] = i;
	int s = 0;

	for(int i=N-2;i>=2;i--){
		rep(j,p[i]+1) UF.unite(v[s+p[i]+j],v[s+p[i]-j]);
		s += p[i];
	}

	cin>>Q;
	rep(i,Q){
		// cin>>p[N-1];
		// ll x = p[N-1];
		// for(int i=N-2;i>=2;i--){
		// 	x -= p[i];
		// 	x = abs(x);
		// }
		// ll ans = x + p[0] - p[1];
		// cout<<ans<<endl;
		ll a;
		cin>>a;
		if(a>=2100000){
			cout<<a-s+p[0]-p[1]<<endl;
			continue;
		}else{
			cout<<UF.mx[UF.find(a)] - s + p[0]-p[1]<<endl;
		}
	}
}

Submission Info

Submission Time
Task H - Tokaido
User sigma425
Language C++14 (GCC 5.4.1)
Score 1600
Code Size 1788 Byte
Status AC
Exec Time 469 ms
Memory 36608 KB

Judge Result

Set Name sample dataset1 dataset2
Score / Max Score 0 / 0 700 / 700 900 / 900
Status
AC × 2
AC × 20
AC × 39
Set Name Test Cases
sample sample-01.txt, sample-02.txt
dataset1 sample-01.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt
dataset2 sample-01.txt, sample-02.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt, 02-15.txt, 02-16.txt, sample-01.txt, sample-02.txt
Case Name Status Exec Time Memory
01-01.txt AC 60 ms 34560 KB
01-02.txt AC 16 ms 33024 KB
01-03.txt AC 23 ms 33024 KB
01-04.txt AC 43 ms 33792 KB
01-05.txt AC 61 ms 34560 KB
01-06.txt AC 60 ms 34560 KB
01-07.txt AC 36 ms 33536 KB
01-08.txt AC 61 ms 34560 KB
01-09.txt AC 61 ms 34560 KB
01-10.txt AC 23 ms 33024 KB
01-11.txt AC 29 ms 33408 KB
01-12.txt AC 56 ms 34560 KB
01-13.txt AC 57 ms 34560 KB
01-14.txt AC 57 ms 34560 KB
01-15.txt AC 57 ms 34560 KB
01-16.txt AC 55 ms 34560 KB
01-17.txt AC 48 ms 34560 KB
01-18.txt AC 48 ms 34560 KB
01-19.txt AC 48 ms 34560 KB
02-01.txt AC 79 ms 33536 KB
02-02.txt AC 462 ms 36608 KB
02-03.txt AC 460 ms 35072 KB
02-04.txt AC 445 ms 34944 KB
02-05.txt AC 409 ms 33792 KB
02-06.txt AC 457 ms 35072 KB
02-07.txt AC 469 ms 35200 KB
02-08.txt AC 436 ms 34432 KB
02-09.txt AC 415 ms 34304 KB
02-10.txt AC 444 ms 35072 KB
02-11.txt AC 449 ms 35968 KB
02-12.txt AC 462 ms 35840 KB
02-13.txt AC 451 ms 35840 KB
02-14.txt AC 462 ms 35968 KB
02-15.txt AC 456 ms 36224 KB
02-16.txt AC 447 ms 36224 KB
sample-01.txt AC 16 ms 33024 KB
sample-02.txt AC 16 ms 33024 KB