Submission #1203928


Source Code Expand

#include<vector>
#include<cmath>
#include<map>
#include<cstdlib>
#include<iostream>
#include<sstream>
#include<fstream>
#include<string>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<set>
#include<stack>
#include<bitset>
#include<functional>
#include<ctime>
#include<queue>
#include<deque>
#include<complex>
#include<cassert>
using namespace std;
#define pb push_back
#define pf push_front
typedef long long lint;
typedef complex<double> P;
#define mp make_pair
#define fi first
#define se second
typedef pair<int,int> pint;
#define All(s) s.begin(),s.end()
#define rAll(s) s.rbegin(),s.rend()
#define REP(i,a,b) for(int i=a;i<b;i++)
#define rep(i,n) REP(i,0,n)
ostream &operator<<(ostream &os, const pint &a) { os << "(" << a.fi << "," << a.se << ")"; return os; }
ostream &operator<<(ostream &os, const vector<int> &a) {
	os<<"[";
	rep(i,a.size()){
		os<<a[i];
		if(i<a.size()-1) os<<",";
	}
	os<<"]";
	return os; 
}
#define maxv 5141919
vector<int> gr[maxv],rgr[maxv];
vector<int> vs;
bool sumi[maxv];
int cmp[maxv];
void dfs(int v){
	sumi[v]=true;
	rep(i,gr[v].size()){
		if(!sumi[gr[v][i]]) dfs(gr[v][i]);
	}
	vs.pb(v);
}
void rdfs(int v,int k){
	sumi[v]=true;cmp[v]=k;
	rep(i,rgr[v].size()){
		if(!sumi[rgr[v][i]]) rdfs(rgr[v][i],k);
	}
}
int scc(int v)
{
	memset(sumi,false,sizeof(sumi));
	vs.clear();
	rep(i,v){
		if(!sumi[i]) dfs(i);
	}
	memset(sumi,false,sizeof(sumi));
	int k=0;
	for(int i=vs.size()-1;i>=0;i--){
		if(!sumi[vs[i]]) rdfs(vs[i],k++);
	}
	return k;
}
void aedge(int v,int w){
	//cout<<v<<' '<<w<<endl;
	gr[v].pb(w);
	rgr[w].pb(v);
}
#define N 65536
int act[2][N*2+10];
//[a,b)にvから辺を貼る
void query(int a,int b,int v,int id,int k=0,int l=0,int r=N){
	if(r<=a || b<=l) return;
	if(a<=l && r<=b){
		aedge(v,act[id][k]);return;
	}
	query(a,b,v,id,k*2+1,l,(l+r)/2);
	query(a,b,v,id,k*2+2,(l+r)/2,r);
}
int n;
//(id,x)に点yを貼る
void ap(int id,int x,int y){
	int k=x+N-1,pre=y;
	while(1){
		int np=n;n++;
		aedge(np,pre);
		aedge(np,act[id][k]);
		act[id][k]=np;
		pre=act[id][k];
		if(k<1) break;
		k=(k-1)/2;
	}
}
int l[51419],r[51419];
int pos[2][51419];
vector<pint> V[2];
int num[maxv],dp[maxv];
vector<int> ed[maxv];
int cal(int v){
	if(dp[v]>=0) return dp[v];
	int ret=0;
	rep(i,ed[v].size()){
		if(v!=ed[v][i]) ret=max(ret,cal((ed[v][i])));
	}
	return dp[v]=ret+num[v];
}
int main()
{
	int m;
	cin>>m;
	rep(i,m) cin>>l[i];
	rep(i,m) cin>>r[i];
	rep(i,m) V[0].pb(mp(l[i]-i,i)),V[1].pb(mp(l[i]+i,i));
	sort(All(V[0]));sort(All(V[1]));
	rep(i,2) rep(j,m) pos[i][V[i][j].se]=j;
	
	n=m;
	rep(i,N*2-1){act[0][i]=n;n++;}
	rep(i,N*2-1){act[1][i]=n;n++;}
	REP(i,1,N*2-1) aedge(act[0][(i-1)/2],act[0][i]),aedge(act[1][(i-1)/2],act[1][i]);
	rep(i,m){
		query(0,lower_bound(All(V[0]),mp(r[i]-i,114514))-V[0].begin(),i,0);
		ap(0,pos[0][i],i);
	}
	for(int i=m-1;i>=0;i--){
		query(1,lower_bound(All(V[1]),mp(r[i]+i,114514))-V[1].begin(),i,1);
		ap(1,pos[1][i],i);
	}
	
	int v=scc(n),out=0;
	memset(num,0,sizeof(num));memset(dp,-1,sizeof(dp));
	rep(i,m) num[cmp[i]]++;
	rep(i,n) rep(j,gr[i].size()) ed[cmp[i]].pb(cmp[gr[i][j]]);
	rep(i,v){
		if(ed[i].size()>0){
			sort(All(ed[i]));
			ed[i].erase(unique(All(ed[i])));
		}
	}
	rep(i,v) out=max(out,cal(i));
	cout<<out<<endl;
}

Submission Info

Submission Time
Task E - 遊園地
User sky58
Language C++14 (GCC 5.4.1)
Score 0
Code Size 3380 Byte
Status RE
Exec Time 1313 ms
Memory 633440 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 1200
Status
RE × 3
RE × 36
Set Name Test Cases
Sample sample1.txt, sample2.txt, sample3.txt
All in1.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in2.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in3.txt, in30.txt, in31.txt, in32.txt, in33.txt, in4.txt, in5.txt, in6.txt, in7.txt, in8.txt, in9.txt, sample1.txt, sample2.txt, sample3.txt
Case Name Status Exec Time Memory
in1.txt RE 1194 ms 631820 KB
in10.txt RE 1196 ms 631688 KB
in11.txt RE 999 ms 616928 KB
in12.txt RE 1020 ms 616672 KB
in13.txt RE 974 ms 619104 KB
in14.txt RE 986 ms 618848 KB
in15.txt RE 996 ms 616928 KB
in16.txt RE 1062 ms 615904 KB
in17.txt RE 1064 ms 615392 KB
in18.txt RE 1107 ms 614856 KB
in19.txt RE 1111 ms 614600 KB
in2.txt RE 1199 ms 632076 KB
in20.txt RE 1075 ms 614752 KB
in21.txt RE 920 ms 618468 KB
in22.txt RE 917 ms 620132 KB
in23.txt RE 912 ms 622308 KB
in24.txt RE 910 ms 622052 KB
in25.txt RE 919 ms 618468 KB
in26.txt RE 245 ms 428020 KB
in27.txt RE 245 ms 428020 KB
in28.txt RE 251 ms 428020 KB
in29.txt RE 1313 ms 631648 KB
in3.txt RE 1244 ms 632328 KB
in30.txt RE 1297 ms 632928 KB
in31.txt RE 1294 ms 631904 KB
in32.txt RE 1313 ms 633440 KB
in33.txt RE 1293 ms 633312 KB
in4.txt RE 1227 ms 631948 KB
in5.txt RE 1198 ms 631176 KB
in6.txt RE 1199 ms 632460 KB
in7.txt RE 1198 ms 632968 KB
in8.txt RE 1201 ms 632584 KB
in9.txt RE 1204 ms 631304 KB
sample1.txt RE 244 ms 428020 KB
sample2.txt RE 246 ms 428020 KB
sample3.txt RE 245 ms 428020 KB