不理解 TLE on subtask 3
#include <bits/stdc++.h>
using namespace std;
#define INF 0x7fffffff
#define ll long long
#define MAXN 500019
#define WA puts("CCF\n");
#define eps 1e-5
int a[MAXN],b[MAXN];
int n;
vector<int> st,en;
void init()
{
st.clear();
en.clear();
memset(b,1,sizeof(b));
memset(a,0,sizeof(a));
}
int main()
{
//freopen("P1536_1.in","r",stdin);
//freopen("out.txt","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int _;
cin>>_;
while(_--)
{
init();
cin>>n;
int s=-1,e=-1;
bool kd=true;
for(int i=1;i<=n;i++)
{
cin>>a[i];
if(a[i]!=-1) kd=false;
b[i]=a[i]-a[i-1];
if(a[i]==-1)
{
e=i;
if(s==-1) s=i;
//qz[i]=qz[i-1];
}
else
{
if(s!=-1||e!=-1)
{
st.push_back(s);
en.push_back(e);
s=e=-1;
}
//qz[i]=qz[i-1]+a[i];
}
}
if(kd)
{
for(int i=1;i<=n;i++) cout<<"19 ";
continue;
}
int len=st.size();
if(len==0)
{
for(int i=1;i<=n;i++)
{
cout<<a[i]-a[i-1]<<" ";
}
cout<<"\n";
continue;
}
//for(int i=1;i<=n;i++) cout<<qz[i]<<" ";
//puts("over");
for(int i=0;i<len;i++)
{
int e=en[i],s=st[i];
//cout<<s<<" "<<e<<"\n";
int num=(a[e+1]-a[s-1]);
//cout<<a[e+1]<<"-"<<qz[s-1]<<"\n";
int mo=num%(e-s+2);
//cout<<mo<<":"<<num<<"\n";
int add=(num-mo)/(e-s+2);
b[e+1]=add+mo;
for(int i=s;i<=e;i++)
{
b[i]=add;
}
}
for(int i=1;i<=n;i++)
{
cout<<(b[i]<=0?19:b[i])<<" ";
}
cout<<"\n";
}
return 0;
}