Submission #61593825


Source Code Expand

Copy
#include <bits/stdc++.h>
using namespace std;
const int N=5e5+1;
int n,a[N],t[N<<2],tag[N<<2];
inline int ls(int p)
{
return p<<1;
}
inline int rs(int p)
{
return p<<1|1;
}
inline void addtag(int p,int pl,int pr,int x)
{
t[p]+=(pr-pl+1)*x;
tag[p]+=x;
}
inline void push_up(int p)
{
t[p]=t[ls(p)]+t[rs(p)];
}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <bits/stdc++.h>
using namespace std;
const int N=5e5+1;
int n,a[N],t[N<<2],tag[N<<2];
inline int ls(int p)
{
	return p<<1;
}
inline int rs(int p)
{
	return p<<1|1;
}
inline void addtag(int p,int pl,int pr,int x)
{
	t[p]+=(pr-pl+1)*x;
	tag[p]+=x;
}
inline void push_up(int p)
{
	t[p]=t[ls(p)]+t[rs(p)];
}
inline void push_down(int p,int pl,int pr)
{
	int m=(pl+pr)>>1;
	addtag(ls(p),pl,m,tag[p]);
	addtag(rs(p),m+1,pr,tag[p]);
	tag[p]=0;
}
void bulid(int p,int pl,int pr)
{
	if(pl==pr)
	{
		t[p]=a[pl];
		return;
	}
	int m=(pl+pr)>>1;
	bulid(ls(p),pl,m);
	bulid(rs(p),m+1,pr);
	push_up(p);
}
void update(int l,int r,int p,int pl,int pr,int x)
{
	if(l<=pl&&pr<=r)
	{
		addtag(p,pl,pr,x);
		return;
	}
	int m=(pl+pr)>>1;
	push_down(p,pl,pr);
	if(l<=m)	update(l,r,ls(p),pl,m,x);
	if(m<r)		update(l,r,rs(p),m+1,pr,x);
	push_up(p);
}
int query(int l,int r,int p,int pl,int pr)
{
	if(l<=pl&&pr<=r)	return t[p];
	int m=(pl+pr)>>1,ans=0;
	push_down(p,pl,pr);
	if(l<=m)	ans+=query(l,r,ls(p),pl,m);
	if(m<r)		ans+=query(l,r,rs(p),m+1,pr);
	return ans;
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++)	cin>>a[i];
	bulid(1,1,n);
	for(int i=1;i<=n;i++)
	{
		int x=query(i,i,1,1,n);
		update(i+1,min(n,i+x),1,1,n,1);
		cout<<i+x-min(n,i+x)<<' ';
	}
	return 0;
}

Submission Info

Submission Time
Task D - Coming of Age Celebration
User buzhidao6667
Language C++ 20 (gcc 12.2)
Score 400
Code Size 1383 Byte
Status AC
Exec Time 214 ms
Memory 14072 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 3
AC × 23
Set Name Test Cases
Sample sample00.txt, sample01.txt, sample02.txt
All sample00.txt, sample01.txt, sample02.txt, testcase00.txt, testcase01.txt, testcase02.txt, testcase03.txt, testcase04.txt, testcase05.txt, testcase06.txt, testcase07.txt, testcase08.txt, testcase09.txt, testcase10.txt, testcase11.txt, testcase12.txt, testcase13.txt, testcase14.txt, testcase15.txt, testcase16.txt, testcase17.txt, testcase18.txt, testcase19.txt
Case Name Status Exec Time Memory
sample00.txt AC 1 ms 3516 KB
sample01.txt AC 1 ms 3452 KB
sample02.txt AC 1 ms 3472 KB
testcase00.txt AC 1 ms 3516 KB
testcase01.txt AC 149 ms 13748 KB
testcase02.txt AC 174 ms 14072 KB
testcase03.txt AC 169 ms 13300 KB
testcase04.txt AC 212 ms 13728 KB
testcase05.txt AC 47 ms 8068 KB
testcase06.txt AC 213 ms 13624 KB
testcase07.txt AC 161 ms 13272 KB
testcase08.txt AC 212 ms 13556 KB
testcase09.txt AC 170 ms 13344 KB
testcase10.txt AC 212 ms 13588 KB
testcase11.txt AC 74 ms 8336 KB
testcase12.txt AC 212 ms 13536 KB
testcase13.txt AC 125 ms 12916 KB
testcase14.txt AC 212 ms 13560 KB
testcase15.txt AC 19 ms 4856 KB
testcase16.txt AC 214 ms 13624 KB
testcase17.txt AC 171 ms 13240 KB
testcase18.txt AC 144 ms 13560 KB
testcase19.txt AC 137 ms 13452 KB


2025-03-28 (Fri)
18:06:20 +00:00