Submission #826826

#TimeUsernameProblemLanguageResultExecution timeMemory
826826ymm사탕 분배 (IOI21_candies)C++17
100 / 100
1360 ms8988 KiB
#include "candies.h"
#include <bits/stdc++.h>
#define Loop(x,l,r) for (ll x = (l); x < (r); ++x)
typedef long long ll;
using namespace std;

#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2")

const int inf = 1e9+1;
const int N = 200'010;
const int S = 2048;
int a[N], c[N];

void add(int l, int r, int x);
void sub(int l, int r, int x);
void addsub(int l, int r, int x, int y);
void subadd(int l, int r, int x, int y);
asm(R"dard(
	.p2align 4
	.globl	_Z3addiii
	.type	_Z3addiii, @function
_Z3addiii:
.LmyFB9795:
	.cfi_startproc
	vmovd	%edx, %xmm1
	movslq	%esi, %r10
	movslq	%edi, %rdx
	cmpq	%r10, %rdx
	jge	.Lmy55
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%r10, %r8
	vmovdqa	%xmm1, %xmm0
	subq	%rdx, %r8
	leaq	-1(%r8), %rax
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	pushq	%r12
	pushq	%rbx
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	movq	%rdx, %rbx
	cmpq	$6, %rax
	jbe	.Lmy8
	movq	%r8, %r12
	leaq	a(%rip), %r9
	xorl	%eax, %eax
	shrq	$3, %r12
	leaq	0(,%rdx,4), %rdi
	vpbroadcastd	%xmm1, %ymm2
	salq	$5, %r12
	leaq	c(%rip), %r11
	leaq	(%r9,%rdi), %rcx
	leaq	-32(%r12), %rsi
	addq	%r11, %rdi
	shrq	$5, %rsi
	addq	$1, %rsi
	andl	$7, %esi
	je	.Lmy4
	cmpq	$1, %rsi
	je	.Lmy35
	cmpq	$2, %rsi
	je	.Lmy36
	cmpq	$3, %rsi
	je	.Lmy37
	cmpq	$4, %rsi
	je	.Lmy38
	cmpq	$5, %rsi
	je	.Lmy39
	cmpq	$6, %rsi
	jne	.Lmy59
.Lmy40:
	vpaddd	(%rcx,%rax), %ymm2, %ymm5
	vpminsd	(%rdi,%rax), %ymm5, %ymm6
	vmovdqu	%ymm6, (%rcx,%rax)
	addq	$32, %rax
.Lmy39:
	vpaddd	(%rcx,%rax), %ymm2, %ymm7
	vpminsd	(%rdi,%rax), %ymm7, %ymm8
	vmovdqu	%ymm8, (%rcx,%rax)
	addq	$32, %rax
.Lmy38:
	vpaddd	(%rcx,%rax), %ymm2, %ymm9
	vpminsd	(%rdi,%rax), %ymm9, %ymm10
	vmovdqu	%ymm10, (%rcx,%rax)
	addq	$32, %rax
.Lmy37:
	vpaddd	(%rcx,%rax), %ymm2, %ymm11
	vpminsd	(%rdi,%rax), %ymm11, %ymm12
	vmovdqu	%ymm12, (%rcx,%rax)
	addq	$32, %rax
.Lmy36:
	vpaddd	(%rcx,%rax), %ymm2, %ymm13
	vpminsd	(%rdi,%rax), %ymm13, %ymm14
	vmovdqu	%ymm14, (%rcx,%rax)
	addq	$32, %rax
.Lmy35:
	vpaddd	(%rcx,%rax), %ymm2, %ymm15
	vpminsd	(%rdi,%rax), %ymm15, %ymm3
	vmovdqu	%ymm3, (%rcx,%rax)
	addq	$32, %rax
	cmpq	%rax, %r12
	je	.Lmy51
.Lmy4:
	vpaddd	(%rcx,%rax), %ymm2, %ymm4
	vpminsd	(%rdi,%rax), %ymm4, %ymm5
	vpaddd	32(%rcx,%rax), %ymm2, %ymm6
	vpaddd	64(%rcx,%rax), %ymm2, %ymm8
	vmovdqu	%ymm5, (%rcx,%rax)
	vpminsd	32(%rdi,%rax), %ymm6, %ymm7
	vpaddd	96(%rcx,%rax), %ymm2, %ymm10
	vpaddd	128(%rcx,%rax), %ymm2, %ymm12
	vpaddd	160(%rcx,%rax), %ymm2, %ymm14
	vpaddd	192(%rcx,%rax), %ymm2, %ymm3
	vmovdqu	%ymm7, 32(%rcx,%rax)
	vpminsd	64(%rdi,%rax), %ymm8, %ymm9
	vpaddd	224(%rcx,%rax), %ymm2, %ymm5
	vmovdqu	%ymm9, 64(%rcx,%rax)
	vpminsd	96(%rdi,%rax), %ymm10, %ymm11
	vmovdqu	%ymm11, 96(%rcx,%rax)
	vpminsd	128(%rdi,%rax), %ymm12, %ymm13
	vmovdqu	%ymm13, 128(%rcx,%rax)
	vpminsd	160(%rdi,%rax), %ymm14, %ymm15
	vmovdqu	%ymm15, 160(%rcx,%rax)
	vpminsd	192(%rdi,%rax), %ymm3, %ymm4
	vmovdqu	%ymm4, 192(%rcx,%rax)
	vpminsd	224(%rdi,%rax), %ymm5, %ymm6
	vmovdqu	%ymm6, 224(%rcx,%rax)
	addq	$256, %rax
	cmpq	%rax, %r12
	jne	.Lmy4
.Lmy51:
	movq	%r8, %rdi
	andq	$-8, %rdi
	addq	%rdi, %rdx
	testb	$7, %r8b
	je	.Lmy60
	vzeroupper
.Lmy3:
	subq	%rdi, %r8
	leaq	-1(%r8), %rcx
	cmpq	$2, %rcx
	jbe	.Lmy6
	addq	%rbx, %rdi
	movq	%r8, %r12
	vpshufd	$0, %xmm0, %xmm0
	leaq	(%r9,%rdi,4), %rbx
	andq	$-4, %r12
	vpaddd	(%rbx), %xmm0, %xmm2
	vpminsd	(%r11,%rdi,4), %xmm2, %xmm7
	addq	%r12, %rdx
	andl	$3, %r8d
	vmovdqu	%xmm7, (%rbx)
	je	.Lmy53
.Lmy6:
	vmovd	(%r9,%rdx,4), %xmm8
	vmovd	(%r11,%rdx,4), %xmm10
	leaq	1(%rdx), %r8
	vpaddd	%xmm8, %xmm1, %xmm9
	vpminsd	%xmm10, %xmm9, %xmm11
	vmovd	%xmm11, (%r9,%rdx,4)
	cmpq	%r10, %r8
	jge	.Lmy53
	vmovd	(%r9,%r8,4), %xmm12
	vmovd	(%r11,%r8,4), %xmm14
	addq	$2, %rdx
	vpaddd	%xmm12, %xmm1, %xmm13
	vpminsd	%xmm14, %xmm13, %xmm15
	vmovd	%xmm15, (%r9,%r8,4)
	cmpq	%rdx, %r10
	jle	.Lmy53
	vmovd	(%r9,%rdx,4), %xmm3
	vpaddd	%xmm3, %xmm1, %xmm4
	vmovd	(%r11,%rdx,4), %xmm1
	vpminsd	%xmm1, %xmm4, %xmm5
	vmovd	%xmm5, (%r9,%rdx,4)
.Lmy53:
	popq	%rbx
	popq	%r12
	popq	%rbp
	.cfi_remember_state
	.cfi_def_cfa 7, 8
	ret
	.p2align 4,,10
	.p2align 3
.Lmy59:
	.cfi_restore_state
	vpaddd	(%rcx), %ymm2, %ymm3
	vpminsd	(%rdi), %ymm3, %ymm4
	movl	$32, %eax
	vmovdqu	%ymm4, (%rcx)
	jmp	.Lmy40
	.p2align 4,,10
	.p2align 3
.Lmy55:
	.cfi_def_cfa 7, 8
	.cfi_restore 3
	.cfi_restore 6
	.cfi_restore 12
	ret
	.p2align 4,,10
	.p2align 3
.Lmy60:
	.cfi_def_cfa 6, 16
	.cfi_offset 3, -32
	.cfi_offset 6, -16
	.cfi_offset 12, -24
	vzeroupper
	popq	%rbx
	popq	%r12
	popq	%rbp
	.cfi_remember_state
	.cfi_def_cfa 7, 8
	ret
.Lmy8:
	.cfi_restore_state
	xorl	%edi, %edi
	leaq	a(%rip), %r9
	leaq	c(%rip), %r11
	jmp	.Lmy3
	.cfi_endproc
.LmyFE9795:
	.size	_Z3addiii, .-_Z3addiii
	.p2align 4
	.globl	_Z3subiii
	.type	_Z3subiii, @function
_Z3subiii:
.LmyFB9796:
	.cfi_startproc
	vmovd	%edx, %xmm1
	movslq	%esi, %r8
	movslq	%edi, %rdx
	vmovdqa	%xmm1, %xmm3
	cmpq	%r8, %rdx
	jge	.Lmy113
	movq	%r8, %rsi
	movq	%rdx, %r9
	subq	%rdx, %rsi
	leaq	-1(%rsi), %rax
	cmpq	$6, %rax
	jbe	.Lmy68
	movq	%rsi, %rcx
	leaq	a(%rip), %rdi
	vpbroadcastd	%xmm1, %ymm2
	shrq	$3, %rcx
	leaq	(%rdi,%rdx,4), %r11
	vpxor	%xmm0, %xmm0, %xmm0
	salq	$5, %rcx
	leaq	(%rcx,%r11), %r10
	subq	$32, %rcx
	shrq	$5, %rcx
	addq	$1, %rcx
	andl	$7, %ecx
	je	.Lmy64
	cmpq	$1, %rcx
	je	.Lmy95
	cmpq	$2, %rcx
	je	.Lmy96
	cmpq	$3, %rcx
	je	.Lmy97
	cmpq	$4, %rcx
	je	.Lmy98
	cmpq	$5, %rcx
	je	.Lmy99
	cmpq	$6, %rcx
	jne	.Lmy114
.Lmy100:
	vmovdqu	(%r11), %ymm6
	addq	$32, %r11
	vpsubd	%ymm2, %ymm6, %ymm8
	vpmaxsd	%ymm0, %ymm8, %ymm9
	vmovdqu	%ymm9, -32(%r11)
.Lmy99:
	vmovdqu	(%r11), %ymm10
	addq	$32, %r11
	vpsubd	%ymm2, %ymm10, %ymm11
	vpmaxsd	%ymm0, %ymm11, %ymm12
	vmovdqu	%ymm12, -32(%r11)
.Lmy98:
	vmovdqu	(%r11), %ymm13
	addq	$32, %r11
	vpsubd	%ymm2, %ymm13, %ymm14
	vpmaxsd	%ymm0, %ymm14, %ymm15
	vmovdqu	%ymm15, -32(%r11)
.Lmy97:
	vmovdqu	(%r11), %ymm7
	addq	$32, %r11
	vpsubd	%ymm2, %ymm7, %ymm4
	vpmaxsd	%ymm0, %ymm4, %ymm5
	vmovdqu	%ymm5, -32(%r11)
.Lmy96:
	vmovdqu	(%r11), %ymm6
	addq	$32, %r11
	vpsubd	%ymm2, %ymm6, %ymm8
	vpmaxsd	%ymm0, %ymm8, %ymm9
	vmovdqu	%ymm9, -32(%r11)
.Lmy95:
	vmovdqu	(%r11), %ymm10
	addq	$32, %r11
	vpsubd	%ymm2, %ymm10, %ymm11
	vpmaxsd	%ymm0, %ymm11, %ymm12
	vmovdqu	%ymm12, -32(%r11)
	cmpq	%r11, %r10
	je	.Lmy111
.Lmy64:
	vmovdqu	(%r11), %ymm13
	vmovdqu	32(%r11), %ymm7
	addq	$256, %r11
	vmovdqu	-192(%r11), %ymm6
	vmovdqu	-160(%r11), %ymm10
	vpsubd	%ymm2, %ymm13, %ymm14
	vpsubd	%ymm2, %ymm7, %ymm4
	vmovdqu	-128(%r11), %ymm13
	vmovdqu	-96(%r11), %ymm7
	vpsubd	%ymm2, %ymm6, %ymm8
	vpsubd	%ymm2, %ymm10, %ymm11
	vmovdqu	-64(%r11), %ymm6
	vmovdqu	-32(%r11), %ymm10
	vpmaxsd	%ymm0, %ymm14, %ymm15
	vpmaxsd	%ymm0, %ymm4, %ymm5
	vpmaxsd	%ymm0, %ymm8, %ymm9
	vpmaxsd	%ymm0, %ymm11, %ymm12
	vmovdqu	%ymm15, -256(%r11)
	vpsubd	%ymm2, %ymm13, %ymm14
	vpsubd	%ymm2, %ymm7, %ymm4
	vmovdqu	%ymm5, -224(%r11)
	vpsubd	%ymm2, %ymm6, %ymm8
	vpsubd	%ymm2, %ymm10, %ymm11
	vmovdqu	%ymm9, -192(%r11)
	vmovdqu	%ymm12, -160(%r11)
	vpmaxsd	%ymm0, %ymm14, %ymm15
	vpmaxsd	%ymm0, %ymm4, %ymm5
	vpmaxsd	%ymm0, %ymm8, %ymm9
	vpmaxsd	%ymm0, %ymm11, %ymm12
	vmovdqu	%ymm15, -128(%r11)
	vmovdqu	%ymm5, -96(%r11)
	vmovdqu	%ymm9, -64(%r11)
	vmovdqu	%ymm12, -32(%r11)
	cmpq	%r11, %r10
	jne	.Lmy64
.Lmy111:
	movq	%rsi, %rax
	andq	$-8, %rax
	addq	%rax, %rdx
	testb	$7, %sil
	je	.Lmy115
	vzeroupper
.Lmy63:
	subq	%rax, %rsi
	leaq	-1(%rsi), %r11
	cmpq	$2, %r11
	jbe	.Lmy66
	addq	%r9, %rax
	vpshufd	$0, %xmm3, %xmm3
	vpxor	%xmm13, %xmm13, %xmm13
	movq	%rsi, %rcx
	leaq	(%rdi,%rax,4), %r9
	andq	$-4, %rcx
	vmovdqu	(%r9), %xmm2
	addq	%rcx, %rdx
	andl	$3, %esi
	vpsubd	%xmm3, %xmm2, %xmm0
	vpmaxsd	%xmm13, %xmm0, %xmm14
	vmovdqu	%xmm14, (%r9)
	je	.Lmy113
.Lmy66:
	vmovd	(%rdi,%rdx,4), %xmm15
	vpxor	%xmm4, %xmm4, %xmm4
	leaq	1(%rdx), %rsi
	vpsubd	%xmm1, %xmm15, %xmm7
	vpmaxsd	%xmm4, %xmm7, %xmm5
	vmovd	%xmm5, (%rdi,%rdx,4)
	cmpq	%rsi, %r8
	jle	.Lmy113
	vpinsrd	$0, (%rdi,%rsi,4), %xmm4, %xmm6
	addq	$2, %rdx
	vpsubd	%xmm1, %xmm6, %xmm8
	vpmaxsd	%xmm4, %xmm8, %xmm9
	vmovd	%xmm9, (%rdi,%rsi,4)
	cmpq	%rdx, %r8
	jle	.Lmy113
	vpinsrd	$0, (%rdi,%rdx,4), %xmm4, %xmm10
	vpsubd	%xmm1, %xmm10, %xmm11
	vpmaxsd	%xmm4, %xmm11, %xmm1
	vmovd	%xmm1, (%rdi,%rdx,4)
.Lmy113:
	ret
	.p2align 4,,10
	.p2align 3
.Lmy114:
	vmovdqu	(%r11), %ymm7
	addq	$32, %r11
	vpsubd	%ymm2, %ymm7, %ymm4
	vpmaxsd	%ymm0, %ymm4, %ymm5
	vmovdqu	%ymm5, -32(%r11)
	jmp	.Lmy100
	.p2align 4,,10
	.p2align 3
.Lmy115:
	vzeroupper
	ret
.Lmy68:
	xorl	%eax, %eax
	leaq	a(%rip), %rdi
	jmp	.Lmy63
	.cfi_endproc
.LmyFE9796:
	.size	_Z3subiii, .-_Z3subiii
	.p2align 4
	.globl	_Z6addsubiiii
	.type	_Z6addsubiiii, @function
_Z6addsubiiii:
.LmyFB9797:
	.cfi_startproc
	vmovd	%edx, %xmm1
	movslq	%esi, %r10
	movslq	%edi, %rdx
	cmpq	%r10, %rdx
	jge	.Lmy170
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%r10, %rdi
	vmovd	%ecx, %xmm2
	vmovdqa	%xmm1, %xmm0
	subq	%rdx, %rdi
	vmovdqa	%xmm2, %xmm6
	leaq	-1(%rdi), %rax
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	pushq	%r12
	pushq	%rbx
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	movq	%rdx, %rbx
	cmpq	$6, %rax
	jbe	.Lmy123
	movq	%rdi, %r12
	leaq	a(%rip), %r9
	vpxor	%xmm3, %xmm3, %xmm3
	xorl	%eax, %eax
	shrq	$3, %r12
	vpbroadcastd	%xmm1, %ymm5
	vpbroadcastd	%xmm2, %ymm4
	salq	$5, %r12
	leaq	0(,%rdx,4), %rsi
	leaq	c(%rip), %r11
	leaq	-32(%r12), %r8
	leaq	(%r9,%rsi), %rcx
	addq	%r11, %rsi
	shrq	$5, %r8
	addq	$1, %r8
	andl	$7, %r8d
	je	.Lmy119
	cmpq	$1, %r8
	je	.Lmy150
	cmpq	$2, %r8
	je	.Lmy151
	cmpq	$3, %r8
	je	.Lmy152
	cmpq	$4, %r8
	je	.Lmy153
	cmpq	$5, %r8
	je	.Lmy154
	cmpq	$6, %r8
	jne	.Lmy173
.Lmy155:
	vpaddd	(%rcx,%rax), %ymm5, %ymm11
	vpminsd	(%rsi,%rax), %ymm11, %ymm12
	vpsubd	%ymm4, %ymm12, %ymm13
	vpmaxsd	%ymm3, %ymm13, %ymm14
	vmovdqu	%ymm14, (%rcx,%rax)
	addq	$32, %rax
.Lmy154:
	vpaddd	(%rcx,%rax), %ymm5, %ymm15
	vpminsd	(%rsi,%rax), %ymm15, %ymm7
	vpsubd	%ymm4, %ymm7, %ymm8
	vpmaxsd	%ymm3, %ymm8, %ymm9
	vmovdqu	%ymm9, (%rcx,%rax)
	addq	$32, %rax
.Lmy153:
	vpaddd	(%rcx,%rax), %ymm5, %ymm10
	vpminsd	(%rsi,%rax), %ymm10, %ymm11
	vpsubd	%ymm4, %ymm11, %ymm12
	vpmaxsd	%ymm3, %ymm12, %ymm13
	vmovdqu	%ymm13, (%rcx,%rax)
	addq	$32, %rax
.Lmy152:
	vpaddd	(%rcx,%rax), %ymm5, %ymm14
	vpminsd	(%rsi,%rax), %ymm14, %ymm15
	vpsubd	%ymm4, %ymm15, %ymm7
	vpmaxsd	%ymm3, %ymm7, %ymm8
	vmovdqu	%ymm8, (%rcx,%rax)
	addq	$32, %rax
.Lmy151:
	vpaddd	(%rcx,%rax), %ymm5, %ymm9
	vpminsd	(%rsi,%rax), %ymm9, %ymm10
	vpsubd	%ymm4, %ymm10, %ymm11
	vpmaxsd	%ymm3, %ymm11, %ymm12
	vmovdqu	%ymm12, (%rcx,%rax)
	addq	$32, %rax
.Lmy150:
	vpaddd	(%rcx,%rax), %ymm5, %ymm13
	vpminsd	(%rsi,%rax), %ymm13, %ymm14
	vpsubd	%ymm4, %ymm14, %ymm15
	vpmaxsd	%ymm3, %ymm15, %ymm7
	vmovdqu	%ymm7, (%rcx,%rax)
	addq	$32, %rax
	cmpq	%rax, %r12
	je	.Lmy166
.Lmy119:
	vpaddd	(%rcx,%rax), %ymm5, %ymm8
	vpminsd	(%rsi,%rax), %ymm8, %ymm9
	vpaddd	32(%rcx,%rax), %ymm5, %ymm12
	vpaddd	64(%rcx,%rax), %ymm5, %ymm7
	vpsubd	%ymm4, %ymm9, %ymm10
	vpmaxsd	%ymm3, %ymm10, %ymm11
	vmovdqu	%ymm11, (%rcx,%rax)
	vpminsd	32(%rsi,%rax), %ymm12, %ymm13
	vpaddd	96(%rcx,%rax), %ymm5, %ymm11
	vpsubd	%ymm4, %ymm13, %ymm14
	vpmaxsd	%ymm3, %ymm14, %ymm15
	vmovdqu	%ymm15, 32(%rcx,%rax)
	vpminsd	64(%rsi,%rax), %ymm7, %ymm8
	vpaddd	128(%rcx,%rax), %ymm5, %ymm15
	vpsubd	%ymm4, %ymm8, %ymm9
	vpmaxsd	%ymm3, %ymm9, %ymm10
	vmovdqu	%ymm10, 64(%rcx,%rax)
	vpminsd	96(%rsi,%rax), %ymm11, %ymm12
	vpaddd	160(%rcx,%rax), %ymm5, %ymm10
	vpsubd	%ymm4, %ymm12, %ymm13
	vpmaxsd	%ymm3, %ymm13, %ymm14
	vmovdqu	%ymm14, 96(%rcx,%rax)
	vpminsd	128(%rsi,%rax), %ymm15, %ymm7
	vpaddd	192(%rcx,%rax), %ymm5, %ymm14
	vpsubd	%ymm4, %ymm7, %ymm8
	vpmaxsd	%ymm3, %ymm8, %ymm9
	vmovdqu	%ymm9, 128(%rcx,%rax)
	vpminsd	160(%rsi,%rax), %ymm10, %ymm11
	vpaddd	224(%rcx,%rax), %ymm5, %ymm9
	vpsubd	%ymm4, %ymm11, %ymm12
	vpmaxsd	%ymm3, %ymm12, %ymm13
	vmovdqu	%ymm13, 160(%rcx,%rax)
	vpminsd	192(%rsi,%rax), %ymm14, %ymm15
	vpsubd	%ymm4, %ymm15, %ymm7
	vpmaxsd	%ymm3, %ymm7, %ymm8
	vmovdqu	%ymm8, 192(%rcx,%rax)
	vpminsd	224(%rsi,%rax), %ymm9, %ymm10
	vpsubd	%ymm4, %ymm10, %ymm11
	vpmaxsd	%ymm3, %ymm11, %ymm12
	vmovdqu	%ymm12, 224(%rcx,%rax)
	addq	$256, %rax
	cmpq	%rax, %r12
	jne	.Lmy119
.Lmy166:
	movq	%rdi, %rsi
	andq	$-8, %rsi
	addq	%rsi, %rdx
	testb	$7, %dil
	je	.Lmy174
	vzeroupper
.Lmy118:
	subq	%rsi, %rdi
	leaq	-1(%rdi), %rcx
	cmpq	$2, %rcx
	jbe	.Lmy121
	addq	%rbx, %rsi
	vpshufd	$0, %xmm0, %xmm0
	vpshufd	$0, %xmm6, %xmm6
	movq	%rdi, %r12
	leaq	(%r9,%rsi,4), %rbx
	andq	$-4, %r12
	vpxor	%xmm3, %xmm3, %xmm3
	vpaddd	(%rbx), %xmm0, %xmm5
	vpminsd	(%r11,%rsi,4), %xmm5, %xmm4
	addq	%r12, %rdx
	andl	$3, %edi
	vpsubd	%xmm6, %xmm4, %xmm13
	vpmaxsd	%xmm3, %xmm13, %xmm14
	vmovdqu	%xmm14, (%rbx)
	je	.Lmy168
.Lmy121:
	vmovd	(%r9,%rdx,4), %xmm15
	vmovd	(%r11,%rdx,4), %xmm8
	vpxor	%xmm11, %xmm11, %xmm11
	vpaddd	%xmm15, %xmm1, %xmm7
	leaq	1(%rdx), %rdi
	vpminsd	%xmm8, %xmm7, %xmm9
	vpsubd	%xmm2, %xmm9, %xmm10
	vpmaxsd	%xmm11, %xmm10, %xmm12
	vmovd	%xmm12, (%r9,%rdx,4)
	cmpq	%rdi, %r10
	jle	.Lmy168
	vpinsrd	$0, (%r9,%rdi,4), %xmm11, %xmm0
	vpinsrd	$0, (%r11,%rdi,4), %xmm11, %xmm4
	vpxor	%xmm3, %xmm3, %xmm3
	addq	$2, %rdx
	vpaddd	%xmm0, %xmm1, %xmm5
	vpminsd	%xmm4, %xmm5, %xmm6
	vpsubd	%xmm2, %xmm6, %xmm13
	vpmaxsd	%xmm3, %xmm13, %xmm14
	vmovd	%xmm14, (%r9,%rdi,4)
	cmpq	%rdx, %r10
	jle	.Lmy168
	vpinsrd	$0, (%r9,%rdx,4), %xmm3, %xmm15
	vpaddd	%xmm15, %xmm1, %xmm7
	vpinsrd	$0, (%r11,%rdx,4), %xmm3, %xmm1
	vpminsd	%xmm1, %xmm7, %xmm8
	vpsubd	%xmm2, %xmm8, %xmm2
	vpmaxsd	%xmm3, %xmm2, %xmm9
	vmovd	%xmm9, (%r9,%rdx,4)
.Lmy168:
	popq	%rbx
	popq	%r12
	popq	%rbp
	.cfi_remember_state
	.cfi_def_cfa 7, 8
	ret
	.p2align 4,,10
	.p2align 3
.Lmy173:
	.cfi_restore_state
	vpaddd	(%rcx), %ymm5, %ymm7
	vpminsd	(%rsi), %ymm7, %ymm8
	movl	$32, %eax
	vpsubd	%ymm4, %ymm8, %ymm9
	vpmaxsd	%ymm3, %ymm9, %ymm10
	vmovdqu	%ymm10, (%rcx)
	jmp	.Lmy155
	.p2align 4,,10
	.p2align 3
.Lmy170:
	.cfi_def_cfa 7, 8
	.cfi_restore 3
	.cfi_restore 6
	.cfi_restore 12
	ret
	.p2align 4,,10
	.p2align 3
.Lmy174:
	.cfi_def_cfa 6, 16
	.cfi_offset 3, -32
	.cfi_offset 6, -16
	.cfi_offset 12, -24
	vzeroupper
	popq	%rbx
	popq	%r12
	popq	%rbp
	.cfi_remember_state
	.cfi_def_cfa 7, 8
	ret
.Lmy123:
	.cfi_restore_state
	xorl	%esi, %esi
	leaq	a(%rip), %r9
	leaq	c(%rip), %r11
	jmp	.Lmy118
	.cfi_endproc
.LmyFE9797:
	.size	_Z6addsubiiii, .-_Z6addsubiiii
	.p2align 4
	.globl	_Z6subaddiiii
	.type	_Z6subaddiiii, @function
_Z6subaddiiii:
.LmyFB9798:
	.cfi_startproc
	vmovd	%edx, %xmm1
	movslq	%esi, %r10
	movslq	%edi, %rdx
	cmpq	%r10, %rdx
	jge	.Lmy229
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%r10, %rdi
	vmovd	%ecx, %xmm2
	vmovdqa	%xmm1, %xmm6
	subq	%rdx, %rdi
	vmovdqa	%xmm2, %xmm7
	leaq	-1(%rdi), %rax
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	pushq	%r12
	pushq	%rbx
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	movq	%rdx, %rbx
	cmpq	$6, %rax
	jbe	.Lmy182
	movq	%rdi, %r12
	leaq	a(%rip), %r9
	vpxor	%xmm3, %xmm3, %xmm3
	xorl	%eax, %eax
	shrq	$3, %r12
	vpbroadcastd	%xmm1, %ymm4
	vpbroadcastd	%xmm2, %ymm0
	salq	$5, %r12
	leaq	0(,%rdx,4), %rsi
	leaq	c(%rip), %r11
	leaq	-32(%r12), %r8
	leaq	(%r9,%rsi), %rcx
	addq	%r11, %rsi
	shrq	$5, %r8
	addq	$1, %r8
	andl	$7, %r8d
	je	.Lmy178
	cmpq	$1, %r8
	je	.Lmy209
	cmpq	$2, %r8
	je	.Lmy210
	cmpq	$3, %r8
	je	.Lmy211
	cmpq	$4, %r8
	je	.Lmy212
	cmpq	$5, %r8
	je	.Lmy213
	cmpq	$6, %r8
	jne	.Lmy232
.Lmy214:
	vmovdqu	(%rcx,%rax), %ymm12
	vpsubd	%ymm4, %ymm12, %ymm13
	vpmaxsd	%ymm3, %ymm13, %ymm14
	vpaddd	%ymm0, %ymm14, %ymm15
	vpminsd	(%rsi,%rax), %ymm15, %ymm5
	vmovdqu	%ymm5, (%rcx,%rax)
	addq	$32, %rax
.Lmy213:
	vmovdqu	(%rcx,%rax), %ymm8
	vpsubd	%ymm4, %ymm8, %ymm9
	vpmaxsd	%ymm3, %ymm9, %ymm10
	vpaddd	%ymm0, %ymm10, %ymm11
	vpminsd	(%rsi,%rax), %ymm11, %ymm12
	vmovdqu	%ymm12, (%rcx,%rax)
	addq	$32, %rax
.Lmy212:
	vmovdqu	(%rcx,%rax), %ymm13
	vpsubd	%ymm4, %ymm13, %ymm14
	vpmaxsd	%ymm3, %ymm14, %ymm15
	vpaddd	%ymm0, %ymm15, %ymm5
	vpminsd	(%rsi,%rax), %ymm5, %ymm8
	vmovdqu	%ymm8, (%rcx,%rax)
	addq	$32, %rax
.Lmy211:
	vmovdqu	(%rcx,%rax), %ymm9
	vpsubd	%ymm4, %ymm9, %ymm10
	vpmaxsd	%ymm3, %ymm10, %ymm11
	vpaddd	%ymm0, %ymm11, %ymm12
	vpminsd	(%rsi,%rax), %ymm12, %ymm13
	vmovdqu	%ymm13, (%rcx,%rax)
	addq	$32, %rax
.Lmy210:
	vmovdqu	(%rcx,%rax), %ymm14
	vpsubd	%ymm4, %ymm14, %ymm15
	vpmaxsd	%ymm3, %ymm15, %ymm5
	vpaddd	%ymm0, %ymm5, %ymm8
	vpminsd	(%rsi,%rax), %ymm8, %ymm9
	vmovdqu	%ymm9, (%rcx,%rax)
	addq	$32, %rax
.Lmy209:
	vmovdqu	(%rcx,%rax), %ymm10
	vpsubd	%ymm4, %ymm10, %ymm11
	vpmaxsd	%ymm3, %ymm11, %ymm12
	vpaddd	%ymm0, %ymm12, %ymm13
	vpminsd	(%rsi,%rax), %ymm13, %ymm14
	vmovdqu	%ymm14, (%rcx,%rax)
	addq	$32, %rax
	cmpq	%rax, %r12
	je	.Lmy225
.Lmy178:
	vmovdqu	(%rcx,%rax), %ymm15
	vmovdqu	32(%rcx,%rax), %ymm11
	vpsubd	%ymm4, %ymm15, %ymm5
	vpsubd	%ymm4, %ymm11, %ymm12
	vpmaxsd	%ymm3, %ymm5, %ymm8
	vmovdqu	64(%rcx,%rax), %ymm5
	vpmaxsd	%ymm3, %ymm12, %ymm13
	vmovdqu	96(%rcx,%rax), %ymm12
	vpaddd	%ymm0, %ymm8, %ymm9
	vpminsd	(%rsi,%rax), %ymm9, %ymm10
	vpaddd	%ymm0, %ymm13, %ymm14
	vpsubd	%ymm4, %ymm5, %ymm8
	vmovdqu	%ymm10, (%rcx,%rax)
	vpminsd	32(%rsi,%rax), %ymm14, %ymm15
	vpmaxsd	%ymm3, %ymm8, %ymm9
	vmovdqu	128(%rcx,%rax), %ymm8
	vpaddd	%ymm0, %ymm9, %ymm10
	vpsubd	%ymm4, %ymm12, %ymm13
	vmovdqu	%ymm15, 32(%rcx,%rax)
	vpmaxsd	%ymm3, %ymm13, %ymm14
	vpsubd	%ymm4, %ymm8, %ymm9
	vmovdqu	160(%rcx,%rax), %ymm13
	vpminsd	64(%rsi,%rax), %ymm10, %ymm11
	vpaddd	%ymm0, %ymm14, %ymm15
	vpmaxsd	%ymm3, %ymm9, %ymm10
	vpsubd	%ymm4, %ymm13, %ymm14
	vmovdqu	192(%rcx,%rax), %ymm9
	vmovdqu	%ymm11, 64(%rcx,%rax)
	vpminsd	96(%rsi,%rax), %ymm15, %ymm5
	vpaddd	%ymm0, %ymm10, %ymm11
	vpmaxsd	%ymm3, %ymm14, %ymm15
	vpsubd	%ymm4, %ymm9, %ymm10
	vmovdqu	224(%rcx,%rax), %ymm14
	vmovdqu	%ymm5, 96(%rcx,%rax)
	vpaddd	%ymm0, %ymm15, %ymm5
	vpminsd	128(%rsi,%rax), %ymm11, %ymm12
	vpmaxsd	%ymm3, %ymm10, %ymm11
	vpsubd	%ymm4, %ymm14, %ymm15
	vmovdqu	%ymm12, 128(%rcx,%rax)
	vpaddd	%ymm0, %ymm11, %ymm12
	vpminsd	160(%rsi,%rax), %ymm5, %ymm8
	vpmaxsd	%ymm3, %ymm15, %ymm5
	vmovdqu	%ymm8, 160(%rcx,%rax)
	vpaddd	%ymm0, %ymm5, %ymm8
	vpminsd	192(%rsi,%rax), %ymm12, %ymm13
	vmovdqu	%ymm13, 192(%rcx,%rax)
	vpminsd	224(%rsi,%rax), %ymm8, %ymm9
	vmovdqu	%ymm9, 224(%rcx,%rax)
	addq	$256, %rax
	cmpq	%rax, %r12
	jne	.Lmy178
.Lmy225:
	movq	%rdi, %rsi
	andq	$-8, %rsi
	addq	%rsi, %rdx
	testb	$7, %dil
	je	.Lmy233
	vzeroupper
.Lmy177:
	subq	%rsi, %rdi
	leaq	-1(%rdi), %rcx
	cmpq	$2, %rcx
	jbe	.Lmy180
	addq	%rbx, %rsi
	vpshufd	$0, %xmm6, %xmm6
	vpxor	%xmm3, %xmm3, %xmm3
	movq	%rdi, %r12
	leaq	(%r9,%rsi,4), %rbx
	vpshufd	$0, %xmm7, %xmm7
	andq	$-4, %r12
	vmovdqu	(%rbx), %xmm4
	addq	%r12, %rdx
	andl	$3, %edi
	vpsubd	%xmm6, %xmm4, %xmm0
	vpmaxsd	%xmm3, %xmm0, %xmm10
	vpaddd	%xmm7, %xmm10, %xmm11
	vpminsd	(%r11,%rsi,4), %xmm11, %xmm12
	vmovdqu	%xmm12, (%rbx)
	je	.Lmy227
.Lmy180:
	vmovd	(%r9,%rdx,4), %xmm13
	vpxor	%xmm15, %xmm15, %xmm15
	leaq	1(%rdx), %rdi
	vpsubd	%xmm1, %xmm13, %xmm14
	vpinsrd	$0, (%r11,%rdx,4), %xmm15, %xmm9
	vpmaxsd	%xmm15, %xmm14, %xmm5
	vpaddd	%xmm2, %xmm5, %xmm8
	vpminsd	%xmm9, %xmm8, %xmm6
	vmovd	%xmm6, (%r9,%rdx,4)
	cmpq	%rdi, %r10
	jle	.Lmy227
	vmovd	(%r9,%rdi,4), %xmm4
	vpxor	%xmm3, %xmm3, %xmm3
	addq	$2, %rdx
	vpsubd	%xmm1, %xmm4, %xmm0
	vpinsrd	$0, (%r11,%rdi,4), %xmm3, %xmm11
	vpmaxsd	%xmm3, %xmm0, %xmm10
	vpaddd	%xmm2, %xmm10, %xmm7
	vpminsd	%xmm11, %xmm7, %xmm12
	vmovd	%xmm12, (%r9,%rdi,4)
	cmpq	%rdx, %r10
	jle	.Lmy227
	vmovd	(%r9,%rdx,4), %xmm13
	vpsubd	%xmm1, %xmm13, %xmm14
	vpxor	%xmm1, %xmm1, %xmm1
	vpinsrd	$0, (%r11,%rdx,4), %xmm1, %xmm5
	vpmaxsd	%xmm1, %xmm14, %xmm15
	vpaddd	%xmm2, %xmm15, %xmm2
	vpminsd	%xmm5, %xmm2, %xmm8
	vmovd	%xmm8, (%r9,%rdx,4)
.Lmy227:
	popq	%rbx
	popq	%r12
	popq	%rbp
	.cfi_remember_state
	.cfi_def_cfa 7, 8
	ret
	.p2align 4,,10
	.p2align 3
.Lmy232:
	.cfi_restore_state
	vmovdqu	(%rcx), %ymm5
	movl	$32, %eax
	vpsubd	%ymm4, %ymm5, %ymm8
	vpmaxsd	%ymm3, %ymm8, %ymm9
	vpaddd	%ymm0, %ymm9, %ymm10
	vpminsd	(%rsi), %ymm10, %ymm11
	vmovdqu	%ymm11, (%rcx)
	jmp	.Lmy214
	.p2align 4,,10
	.p2align 3
.Lmy229:
	.cfi_def_cfa 7, 8
	.cfi_restore 3
	.cfi_restore 6
	.cfi_restore 12
	ret
	.p2align 4,,10
	.p2align 3
.Lmy233:
	.cfi_def_cfa 6, 16
	.cfi_offset 3, -32
	.cfi_offset 6, -16
	.cfi_offset 12, -24
	vzeroupper
	popq	%rbx
	popq	%r12
	popq	%rbp
	.cfi_remember_state
	.cfi_def_cfa 7, 8
	ret
.Lmy182:
	.cfi_restore_state
	xorl	%esi, %esi
	leaq	a(%rip), %r9
	leaq	c(%rip), %r11
	jmp	.Lmy177
	.cfi_endproc
.LmyFE9798:
	.size	_Z6subaddiiii, .-_Z6subaddiiii
)dard");
//void add(int l, int r, int x)
//{
//	Loop (i,l,r)
//		a[i] = (a[i] + x > c[i]? c[i]: a[i] + x);
//}
//void sub(int l, int r, int x)
//{
//	Loop (i,l,r)
//		a[i] = (a[i] - x < 0? 0: a[i] - x);
//}
//void addsub(int l, int r, int x, int y)
//{
//	Loop (i,l,r) {
//		a[i] = (a[i] + x > c[i]? c[i]: a[i] + x);
//		a[i] = (a[i] - y < 0? 0: a[i] - y);
//	}
//}
//void subadd(int l, int r, int x, int y)
//{
//	Loop (i,l,r) {
//		a[i] = (a[i] - x < 0? 0: a[i] - x);
//		a[i] = (a[i] + y > c[i]? c[i]: a[i] + y);
//	}
//}
void up(int l, int r, int x)
{
	if (x > 0)
		add(l, r, x);
	else
		sub(l, r, -x);
}
void upup(int l, int r, int x, int y)
{
	if (x >  0 && y >  0)
		add(l, r, min(inf, x+y));
	if (x <= 0 && y <= 0)
		sub(l, r, min(inf, -(x+y)));
	if (x >  0 && y <= 0)
		addsub(l, r, x, -y);
	if (x <= 0 && y >  0)
		subadd(l, r, -x, y);
}

std::vector<int> distribute_candies(std::vector<int> _c, std::vector<int> ql,
                                    std::vector<int> qr, std::vector<int> qv) {
    int n = _c.size();
    int q = ql.size();
    for (int &x : qr)
	    ++x;
    if (q%2) {
	    ql.push_back(0);
	    qr.push_back(1);
	    qv.push_back(0);
	    ++q;
    }
    Loop (i,0,n)
	    c[i] = _c[i];
    for (int L = 0; L < n; L += S) {
	    int R = min<int>(L+S, n);
	    for (int i = 0; i < q; i += 2) {
		    int l0 = ql[i], l1 = ql[i+1];
		    int r0 = qr[i], r1 = qr[i+1];
		    int v0 = qv[i], v1 = qv[i+1];
		    if (l0 <= L && R <= r0 && l1 <= L && R <= r1) {
			    upup(L, R, v0, v1);
		    } else {
			    up(max(l0, L), min(r0, R), v0);
			    up(max(l1, L), min(r1, R), v1);
		    }
	    }
    }
    return vector<int>(a, a+n);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...