Submission #930234

# Submission time Handle Problem Language Result Execution time Memory
930234 2024-02-19T07:09:28 Z Wansur Sequence (APIO23_sequence) C++17
0 / 100
467 ms 49748 KB
#include <bits/stdc++.h>
#define f first
#define s second
#define ent '\n'

using namespace std;
typedef long long ll;
const int mxn=5e5+12;
const int mod=998244353;

vector<int> g[mxn];
int p[mxn*4];
int mn[mxn*4];
int mx[mxn*4];

void build(int v,int tl,int tr){
	p[v]=0;
	if(tl==tr){
		mn[v]=mx[v]=tl;
	}
	else{
		int mid=tl+tr>>1;
		build(v*2,tl,mid);
		build(v*2+1,mid+1,tr);
		mn[v]=min(mn[v*2],mn[v*2+1]);
		mx[v]=max(mx[v*2],mx[v*2+1]);
	}
}

void push(int v,int tl,int tr){
	if(tl==tr){
		return;
	}
	mn[v*2]+=p[v];
	mn[v*2+1]+=p[v];
	p[v*2]+=p[v];
	p[v*2+1]+=p[v];
	mx[v*2]+=p[v];
	mx[v*2+1]+=p[v];
	p[v]=0;
}

void upd(int v,int tl,int tr,int l,int r,int x){
	push(v,tl,tr);
	if(tl>r || l>tr)return;
	if(tl>=l && tr<=r){
		mn[v]+=x;
		mx[v]+=x;
		p[v]+=x;
		return;
	}
	int mid=tl+tr>>1;
	upd(v*2,tl,mid,l,r,x);
	upd(v*2+1,mid+1,tr,l,r,x);
	mn[v]=min(mn[v*2],mn[v*2+1]);
	mx[v]=max(mx[v*2],mx[v*2+1]);
}

pair<int,int> get(int v,int tl,int tr,int l,int r){
	push(v,tl,tr);
	if(tl>r || l>tr)return {1e9,-1e9};
	if(tl>=l && tr<=r){
		return {mn[v],mx[v]};
	}
	int mid=tl+tr>>1;
	pair<int,int> x=get(v*2,tl,mid,l,r),y=get(v*2+1,mid+1,tr,l,r);
	return {min(x.f,y.f),max(x.s,y.s)};
}

int sequence(int n, std::vector<int> A){
	vector<int> a={0};
	for(int x:A){
		a.push_back(x);
	}
	for(int i=1;i<=n;i++){
		g[a[i]].push_back(i);
	}
	for(int i=1;i<=n;i++){
		upd(1,0,n,i,n,1);
	}
	int ans=1;
	for(int x=1;x<=n;x++){
		for(int i:g[x]){
//			upd(1,0,n,i,n,-2);
		}
		for(int i=0;i<g[x].size();i++){
//			upd(1,0,n,i,n,2);
			int l=g[x][i];
			pair<int,int> L=get(1,0,n,0,l-1);
			while(i+ans<g[x].size()){
				int r=g[x][i+ans];
				pair<int,int> R=get(1,0,n,r,n);
				R.f-=(ans+1)*2; 
				if(max(L.f,R.f)<=min(L.s,R.s)){
					ans++;
				}
				else break;
			}
			upd(1,0,n,i,n,-2);
		}
		for(int i:g[x]){
//			upd(1,0,n,i,n,-2);
		}
	}
	return ans;
}

Compilation message

sequence.cpp: In function 'void build(int, int, int)':
sequence.cpp:22:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   22 |   int mid=tl+tr>>1;
      |           ~~^~~
sequence.cpp: In function 'void upd(int, int, int, int, int, int)':
sequence.cpp:52:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   52 |  int mid=tl+tr>>1;
      |          ~~^~~
sequence.cpp: In function 'std::pair<int, int> get(int, int, int, int, int)':
sequence.cpp:65:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   65 |  int mid=tl+tr>>1;
      |          ~~^~~
sequence.cpp: In function 'int sequence(int, std::vector<int>)':
sequence.cpp:83:11: warning: unused variable 'i' [-Wunused-variable]
   83 |   for(int i:g[x]){
      |           ^
sequence.cpp:86:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   86 |   for(int i=0;i<g[x].size();i++){
      |               ~^~~~~~~~~~~~
sequence.cpp:90:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   90 |    while(i+ans<g[x].size()){
      |          ~~~~~^~~~~~~~~~~~
sequence.cpp:101:11: warning: unused variable 'i' [-Wunused-variable]
  101 |   for(int i:g[x]){
      |           ^
# Verdict Execution time Memory Grader output
1 Correct 4 ms 14940 KB Output is correct
2 Correct 3 ms 14940 KB Output is correct
3 Incorrect 5 ms 14940 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 4 ms 14940 KB Output is correct
2 Correct 3 ms 14940 KB Output is correct
3 Incorrect 5 ms 14940 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 4 ms 14940 KB Output is correct
2 Correct 355 ms 44024 KB Output is correct
3 Correct 357 ms 43968 KB Output is correct
4 Correct 439 ms 37108 KB Output is correct
5 Correct 363 ms 43112 KB Output is correct
6 Correct 445 ms 43148 KB Output is correct
7 Correct 421 ms 36536 KB Output is correct
8 Incorrect 418 ms 36800 KB Output isn't correct
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 14940 KB Output is correct
2 Incorrect 467 ms 39104 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 381 ms 49748 KB Output is correct
2 Correct 381 ms 49652 KB Output is correct
3 Correct 379 ms 49264 KB Output is correct
4 Correct 374 ms 49276 KB Output is correct
5 Incorrect 445 ms 45876 KB Output isn't correct
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 4 ms 14940 KB Output is correct
2 Correct 3 ms 14940 KB Output is correct
3 Incorrect 5 ms 14940 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 4 ms 14940 KB Output is correct
2 Correct 3 ms 14940 KB Output is correct
3 Incorrect 5 ms 14940 KB Output isn't correct
4 Halted 0 ms 0 KB -