RT,我 A 了,但是用的另一种方案。
下面是代码,注释里有解释。
#include<bits/stdc++.h>
using namespace std;
long long read() {
long long f = 1, x = 0;
char c = getchar();
while (c < '0' || c > '9') {
if (c == '-')f = -1;
c = getchar();
}
while (c >= '0' && c <= '9') {
x = x * 10 + c - '0';
c = getchar();
}
return f * x;
}
void write(long long x) {
if (x < 0) {
putchar('-');
x = -x;
}
if (x > 9)write(x / 10);
putchar(x % 10 + '0');
}
const int N = 1e5 + 10;
long long p[N];
int main() {
long long t = read();
while (t--) {
long long n = read();
for (int i = 1; i <= n; i++)p[i] = read();
long long now = 0;
for (int i = 1; i <= n; i++) {
if (p[i] == -1) {
now++;
write(1);
putchar(' ');
} else {
write(p[i] - now);
putchar(' ');
now = p[i];
}
}
putchar('\n');
}
return 0;
}