Skip to content

ABC-322

A

URLURL\:\to

解法


B

URLURL\:\to

解法


C

URLURL\:\to https://atcoder.jp/contests/abc322/tasks/abc322_c

#累積和 #尺取り法

int main(void) {
ll N, M; scanf("%lld%lld", &N, &M);
ll A[M]; rep(i,0,M) scanf("%lld", &A[i]);
// initialize
ll firework[N+1];
rep(i,0,N+1) firework[i] = 0;
// reflect fireworks
rep(i,0,M) firework[A[i]]++;
// prefixSum
rep(i,0,N) firework[i+1] = firework[i] + firework[i+1];
ll p=1;
rep(i,1,N+1) {
while (firework[p]-firework[p-1]==0) p++;
printf("%lld\n", p-i);
if (i==p) ++p;
}
return 0;
}

解法

何日目までに花火が何発あがるかの累積和を持って置き、花火の累計数が変わるまで尺取りを進め、追いついたらまた尺取り\cdotsと言う風にすると題意を満たせる。


D

URLURL\:\to

解法


E

URLURL\:\to

解法