Submission #4025639
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
#define REP(i,st,ed) for(register int i=st,i##end=ed;i<=i##end;++i)
#define DREP(i,st,ed) for(register int i=st,i##end=ed;i>=i##end;--i)
typedef long long ll;
template<typename T>inline bool chkmin(T &x,T y){return (y<x)?(x=y,1):0;}
template<typename T>inline bool chkmax(T &x,T y){return (y>x)?(x=y,1):0;}
inline int read(){
int x;
char c;
int f=1;
while((c=getchar())!='-' && (c>'9' || c<'0'));
if(c=='-') f=-1,c=getchar();
x=c^'0';
while((c=getchar())>='0' && c<='9') x=(x<<1)+(x<<3)+(c^'0');
return x*f;
}
inline ll readll(){
ll x;
char c;
int f=1;
while((c=getchar())!='-' && (c>'9' || c<'0'));
if(c=='-') f=-1,c=getchar();
x=c^'0';
while((c=getchar())>='0' && c<='9') x=(x<<1ll)+(x<<3ll)+(c^'0');
return x*f;
}
const int maxn=2e5+10,inf=0x3f3f3f3f;
int idx[maxn],idx_cnt,a[maxn];
struct Segment_tree{
int Min[maxn<<2],tag[maxn<<2];
inline void push_down(int x){
if(tag[x]){
Min[x<<1]+=tag[x];
Min[x<<1|1]+=tag[x];
tag[x<<1]+=tag[x];
tag[x<<1|1]+=tag[x];
tag[x]=0;
}
}
inline void push_up(int x){
Min[x]=min(Min[x<<1],Min[x<<1|1]);
}
void build_tree(int x,int L,int R){
if(L==R){
Min[x]=idx[L];
return;
}
int Mid=(L+R)>>1;
build_tree(x<<1,L,Mid),build_tree(x<<1|1,Mid+1,R);
push_up(x);
}
void update(int x,int L,int R,int ql,int qr,int v){
if(ql>qr) return;
if(ql<=L && R<=qr){
tag[x]+=v,Min[x]+=v;
return;
}
int Mid=(L+R)>>1;
push_down(x);
if(ql<=Mid) update(x<<1,L,Mid,ql,qr,v);
if(qr>Mid) update(x<<1|1,Mid+1,R,ql,qr,v);
push_up(x);
}
int query(int x,int L,int R,int ql,int qr){
if(ql<=L && R<=qr) return Min[x];
int Mid=(L+R)>>1,res=inf;
push_down(x);
if(ql<=Mid) chkmin(res,query(x<<1,L,Mid,ql,qr));
if(qr>Mid) chkmin(res,query(x<<1|1,Mid+1,R,ql,qr));
push_up(x);
return res;
}
}Seg;
ll ans;
int main(){
int n=read();
REP(i,1,n) a[i]=read();
REP(i,1,n) idx[++idx_cnt]=a[i];
sort(idx+1,idx+idx_cnt+1);
idx_cnt=unique(idx+1,idx+idx_cnt+1)-idx-1;
Seg.build_tree(1,1,idx_cnt);
REP(i,1,n){
int u=lower_bound(idx+1,idx+idx_cnt+1,a[i])-idx;
ans+=Seg.query(1,1,idx_cnt,u,idx_cnt)-a[i];
Seg.update(1,1,idx_cnt,1,u-1,1);
}
printf("%lld\n",ans);
return 0;
}
Submission Info
Submission Time |
|
Task |
B - Increment and Swap |
User |
zhou888 |
Language |
C++14 (GCC 5.4.1) |
Score |
1500 |
Code Size |
2310 Byte |
Status |
AC |
Exec Time |
137 ms |
Memory |
7936 KB |
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 |
116 ms |
6912 KB |
001.txt |
AC |
117 ms |
6912 KB |
002.txt |
AC |
118 ms |
6912 KB |
003.txt |
AC |
119 ms |
6912 KB |
004.txt |
AC |
120 ms |
6912 KB |
005.txt |
AC |
121 ms |
6912 KB |
006.txt |
AC |
122 ms |
6912 KB |
007.txt |
AC |
123 ms |
6912 KB |
008.txt |
AC |
124 ms |
6912 KB |
009.txt |
AC |
124 ms |
6912 KB |
010.txt |
AC |
125 ms |
6912 KB |
011.txt |
AC |
125 ms |
7936 KB |
012.txt |
AC |
126 ms |
7936 KB |
013.txt |
AC |
126 ms |
7936 KB |
014.txt |
AC |
127 ms |
7936 KB |
015.txt |
AC |
129 ms |
7936 KB |
016.txt |
AC |
129 ms |
7936 KB |
017.txt |
AC |
129 ms |
7936 KB |
018.txt |
AC |
129 ms |
7936 KB |
019.txt |
AC |
130 ms |
7936 KB |
020.txt |
AC |
129 ms |
7936 KB |
021.txt |
AC |
12 ms |
2560 KB |
022.txt |
AC |
110 ms |
6912 KB |
023.txt |
AC |
53 ms |
3584 KB |
024.txt |
AC |
21 ms |
2816 KB |
025.txt |
AC |
69 ms |
3712 KB |
026.txt |
AC |
14 ms |
2688 KB |
027.txt |
AC |
92 ms |
6528 KB |
028.txt |
AC |
45 ms |
3456 KB |
029.txt |
AC |
43 ms |
3456 KB |
030.txt |
AC |
44 ms |
3456 KB |
031.txt |
AC |
92 ms |
6528 KB |
032.txt |
AC |
57 ms |
3584 KB |
033.txt |
AC |
58 ms |
6144 KB |
034.txt |
AC |
100 ms |
6656 KB |
035.txt |
AC |
18 ms |
2816 KB |
036.txt |
AC |
113 ms |
7808 KB |
037.txt |
AC |
87 ms |
6528 KB |
038.txt |
AC |
23 ms |
2816 KB |
039.txt |
AC |
66 ms |
6272 KB |
040.txt |
AC |
58 ms |
6144 KB |
041.txt |
AC |
113 ms |
7808 KB |
042.txt |
AC |
77 ms |
7936 KB |
043.txt |
AC |
77 ms |
7936 KB |
044.txt |
AC |
135 ms |
7936 KB |
045.txt |
AC |
1 ms |
256 KB |
046.txt |
AC |
19 ms |
3840 KB |
047.txt |
AC |
137 ms |
7936 KB |
048.txt |
AC |
19 ms |
3840 KB |
049.txt |
AC |
21 ms |
3840 KB |
050.txt |
AC |
30 ms |
3968 KB |
051.txt |
AC |
52 ms |
3840 KB |
052.txt |
AC |
77 ms |
3840 KB |
053.txt |
AC |
102 ms |
4096 KB |
054.txt |
AC |
127 ms |
6912 KB |
055.txt |
AC |
16 ms |
3840 KB |
056.txt |
AC |
19 ms |
3840 KB |
057.txt |
AC |
29 ms |
3840 KB |
058.txt |
AC |
48 ms |
3840 KB |
059.txt |
AC |
73 ms |
3840 KB |
060.txt |
AC |
99 ms |
4096 KB |
061.txt |
AC |
122 ms |
6912 KB |
062.txt |
AC |
73 ms |
6912 KB |
063.txt |
AC |
72 ms |
6912 KB |
example0.txt |
AC |
2 ms |
2304 KB |
example1.txt |
AC |
2 ms |
2304 KB |