Submission #1197289

#TimeUsernameProblemLanguageResultExecution timeMemory
1197289Batorgil952Bouquet (EGOI24_bouquet)C++20
100 / 100
101 ms15752 KiB
#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define mp make_pair
#define ff first
#define ss second

using namespace std;

const int N=2e5+5;
int l[N], r[N];
int dp[N];
vector< int > u[N];
int tree[4*N];

void update(int v, int l, int r, int p, int x){
	if(p<l || p>r) return;
	if(l==p && p==r){
		tree[v]=x;
	}
	else{
		int mid=(l+r)/2;
		update(2*v, l, mid, p, x);
		update(2*v+1, mid+1, r, p, x);
		tree[v]=max(tree[2*v], tree[2*v+1]);
	}
}

int query(int v, int l, int r, int p){
	if(p<l) return 0;
	if(r<=p){
		return tree[v];
	}
	int mid=(l+r)/2;
	return max(query(2*v, l, mid, p), query(2*v+1, mid+1, r, p));
}

int main(){
	int n, i, j, un, ans;
	
	scanf("%d",&n);
	
	for(i=1; i<=n; i++){
		scanf("%d",&l[i]);
		scanf("%d",&r[i]);
		r[i]=min(i+r[i], n);
		l[i]=max(1, i-l[i]);
		u[r[i]+1].pb(i);
	}
	
	dp[0]=0;
	ans=0;
	for(i=1; i<=n; i++){
		un=u[i].size();
		for(j=0; j<un; j++){
			update(1, 1, n, u[i][j], dp[u[i][j]]);
		}
		dp[i]=query(1, 1, n, l[i]-1)+1;
		ans=max(ans, dp[i]);
	}
	
	printf("%d\n", ans);
	
	return 0;
}

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:41:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   41 |         scanf("%d",&n);
      |         ~~~~~^~~~~~~~~
Main.cpp:44:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   44 |                 scanf("%d",&l[i]);
      |                 ~~~~~^~~~~~~~~~~~
Main.cpp:45:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   45 |                 scanf("%d",&r[i]);
      |                 ~~~~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...