Submission #2825002
Source Code Expand
#include<cstdio>
#include<algorithm>
#include<iostream>
#define LL long long
#define N 1e9
using namespace std;
const int maxn = 3e5 + 5;
namespace SGT {
struct node {
LL mn, add;
int ch[2];
}t[maxn * 32];
int cnt, root;
int Create(int l, int r) {
return t[++cnt] = (node) {l, 0, 0, 0}, cnt;
}
void push_up(int rt, int l, int r) {
int mid = l + r >> 1;
if(!t[rt].ch[0]) t[rt].ch[0] = Create(l, mid);
if(!t[rt].ch[1]) t[rt].ch[1] = Create(mid + 1, r);
t[rt].mn = min(t[t[rt].ch[0]].mn, t[t[rt].ch[1]].mn);
}
void push_down(int rt, int l, int r) {
if(t[rt].add) {
int mid = l + r >> 1, *ls = &t[rt].ch[0], *rs = &t[rt].ch[1];
if(!*ls) *ls = Create(l, mid);
if(!*rs) *rs = Create(mid + 1, r);
t[*ls].add += t[rt].add, t[*ls].mn += t[rt].add;
t[*rs].add += t[rt].add, t[*rs].mn += t[rt].add;
t[rt].add = 0;
}
}
LL Q(int l, int r, int tl, int tr, int & rt = root) {
if(!rt) rt = Create(tl, tr);
if(l == tl && r == tr)
return t[rt].mn;
int mid = tl + tr >> 1;
push_down(rt, tl, tr);
if(r <= mid) return Q(l, r, tl, mid, t[rt].ch[0]);
else if(l > mid) return Q(l, r, mid + 1, tr, t[rt].ch[1]);
else return min(Q(l, mid, tl, mid, t[rt].ch[0]), Q(mid + 1, r, mid + 1, tr, t[rt].ch[1]));
}
void add(int l, int r, int tl, int tr, LL dt, int & rt = root) {
if(!rt) rt = Create(tl, tr);
if(tl == l && tr == r)
return t[rt].add += dt, t[rt].mn += dt, void();
int mid = tl + tr >> 1;
push_down(rt, tl, tr);
if(r <= mid) add(l, r, tl, mid, dt, t[rt].ch[0]);
else if(l > mid) add(l, r, mid + 1, tr, dt, t[rt].ch[1]);
else add(l, mid, tl, mid, dt, t[rt].ch[0]), add(mid + 1, r, mid + 1, tr, dt, t[rt].ch[1]);
push_up(rt, tl, tr);
}
}
int n, a[maxn];
LL ans;
signed main() {
scanf("%d", &n);
for(register int i = 1; i <= n; ++i)
scanf("%d", &a[i]);
for(register int i = 1; i <= n; ++i) {
ans += SGT :: Q(a[i], N, 0, N) - a[i];
SGT :: add(0, a[i] - 1, 0, N, 1);
}
printf("%lld", ans);
return 0;
}
Submission Info
Submission Time |
|
Task |
B - Increment and Swap |
User |
Rockdu |
Language |
C++14 (GCC 5.4.1) |
Score |
1500 |
Code Size |
2041 Byte |
Status |
AC |
Exec Time |
235 ms |
Memory |
108416 KB |
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:58:17: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d", &n);
^
./Main.cpp:60:21: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d", &a[i]);
^
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
1500 / 1500 |
Status |
|
|
Set Name |
Test Cases |
Sample |
example0.txt, example1.txt |
All |
000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, 028.txt, 029.txt, 030.txt, 031.txt, 032.txt, 033.txt, 034.txt, 035.txt, 036.txt, 037.txt, 038.txt, 039.txt, 040.txt, 041.txt, 042.txt, 043.txt, 044.txt, 045.txt, 046.txt, 047.txt, 048.txt, 049.txt, 050.txt, 051.txt, 052.txt, 053.txt, 054.txt, 055.txt, 056.txt, 057.txt, 058.txt, 059.txt, 060.txt, 061.txt, 062.txt, 063.txt, example0.txt, example1.txt |
Case Name |
Status |
Exec Time |
Memory |
000.txt |
AC |
166 ms |
6016 KB |
001.txt |
AC |
167 ms |
6016 KB |
002.txt |
AC |
167 ms |
6016 KB |
003.txt |
AC |
168 ms |
6016 KB |
004.txt |
AC |
168 ms |
6016 KB |
005.txt |
AC |
169 ms |
8064 KB |
006.txt |
AC |
172 ms |
8064 KB |
007.txt |
AC |
170 ms |
8064 KB |
008.txt |
AC |
171 ms |
8064 KB |
009.txt |
AC |
172 ms |
10112 KB |
010.txt |
AC |
172 ms |
10112 KB |
011.txt |
AC |
173 ms |
10112 KB |
012.txt |
AC |
173 ms |
10112 KB |
013.txt |
AC |
173 ms |
12160 KB |
014.txt |
AC |
174 ms |
12160 KB |
015.txt |
AC |
174 ms |
12160 KB |
016.txt |
AC |
175 ms |
14208 KB |
017.txt |
AC |
176 ms |
14208 KB |
018.txt |
AC |
176 ms |
14208 KB |
019.txt |
AC |
177 ms |
16256 KB |
020.txt |
AC |
177 ms |
16256 KB |
021.txt |
AC |
19 ms |
768 KB |
022.txt |
AC |
158 ms |
5888 KB |
023.txt |
AC |
80 ms |
3584 KB |
024.txt |
AC |
33 ms |
3328 KB |
025.txt |
AC |
102 ms |
5632 KB |
026.txt |
AC |
22 ms |
1024 KB |
027.txt |
AC |
127 ms |
5760 KB |
028.txt |
AC |
67 ms |
3456 KB |
029.txt |
AC |
64 ms |
3456 KB |
030.txt |
AC |
65 ms |
3456 KB |
031.txt |
AC |
129 ms |
7808 KB |
032.txt |
AC |
87 ms |
5632 KB |
033.txt |
AC |
84 ms |
5632 KB |
034.txt |
AC |
139 ms |
9984 KB |
035.txt |
AC |
28 ms |
3328 KB |
036.txt |
AC |
156 ms |
12032 KB |
037.txt |
AC |
122 ms |
9856 KB |
038.txt |
AC |
35 ms |
3328 KB |
039.txt |
AC |
93 ms |
7680 KB |
040.txt |
AC |
85 ms |
7680 KB |
041.txt |
AC |
156 ms |
14080 KB |
042.txt |
AC |
143 ms |
12160 KB |
043.txt |
AC |
144 ms |
12160 KB |
044.txt |
AC |
173 ms |
12160 KB |
045.txt |
AC |
1 ms |
256 KB |
046.txt |
AC |
129 ms |
1024 KB |
047.txt |
AC |
235 ms |
108416 KB |
048.txt |
AC |
135 ms |
1024 KB |
049.txt |
AC |
130 ms |
1024 KB |
050.txt |
AC |
133 ms |
1024 KB |
051.txt |
AC |
140 ms |
1024 KB |
052.txt |
AC |
149 ms |
1152 KB |
053.txt |
AC |
161 ms |
3968 KB |
054.txt |
AC |
170 ms |
10112 KB |
055.txt |
AC |
125 ms |
1024 KB |
056.txt |
AC |
124 ms |
1024 KB |
057.txt |
AC |
127 ms |
1024 KB |
058.txt |
AC |
134 ms |
1024 KB |
059.txt |
AC |
144 ms |
1152 KB |
060.txt |
AC |
155 ms |
3968 KB |
061.txt |
AC |
166 ms |
10112 KB |
062.txt |
AC |
142 ms |
10112 KB |
063.txt |
AC |
143 ms |
10112 KB |
example0.txt |
AC |
1 ms |
256 KB |
example1.txt |
AC |
1 ms |
256 KB |