Submission #3831909
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
typedef long long lint;
typedef pair<int, int> pi;
const int MAXN = 200005;
const int MAXT = 530000;
int n, a[MAXN];
vector<int> v;
struct seg{
pi tree[MAXT];
int lazy[MAXT];
void init(int s, int e, int p, vector<int> &v){
if(s == e){
tree[p] = pi(v[s], s);
return;
}
int m = (s + e) / 2;
init(s, m, 2*p, v);
init(m+1, e, 2*p+1, v);
tree[p] = min(tree[2*p], tree[2*p+1]);
}
void lazydown(int p){
tree[2*p].first += lazy[p];
tree[2*p+1].first += lazy[p];
lazy[2*p] += lazy[p];
lazy[2*p+1] += lazy[p];
lazy[p] = 0;
}
void add(int s, int e, int ps, int pe, int p, int v){
if(e < ps || pe < s) return;
if(s <= ps && pe <= e){
tree[p].first += v;
lazy[p] += v;
return;
}
int pm = (ps + pe) / 2;
lazydown(p);
add(s, e, ps, pm, 2*p, v);
add(s, e, pm+1, pe, 2*p+1, v);
tree[p] = min(tree[2*p], tree[2*p+1]);
}
pi query(int s, int e, int ps, int pe, int p){
if(e < ps || pe < s) return pi(2e9, -1);
if(s <= ps && pe <= e) return tree[p];
int pm = (ps + pe) / 2;
lazydown(p);
return min(query(s, e, ps, pm, 2*p), query(s, e, pm+1, pe, 2*p+1));
}
}seg;
int main(){
scanf("%d",&n);
for(int i=0; i<n; i++){
scanf("%d",&a[i]);
v.push_back(a[i]);
}
sort(v.begin(), v.end());
v.resize(unique(v.begin(), v.end()) - v.begin());
seg.init(0, v.size() - 1, 1, v);
lint ans = 0;
for(int i=0; i<n; i++){
a[i] = lower_bound(v.begin(), v.end(), a[i]) - v.begin();
auto ret = seg.query(a[i], v.size() - 1, 0, v.size() - 1, 1);
ans += ret.first - v[a[i]];
seg.add(0, ret.second - 1, 0, v.size() - 1, 1, 1);
}
cout << ans << endl;
}
Submission Info
Submission Time
2018-12-21 18:18:38+0900
Task
B - Increment and Swap
User
koosaga
Language
C++14 (GCC 5.4.1)
Score
1500
Code Size
1720 Byte
Status
AC
Exec Time
155 ms
Memory
8180 KB
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:54:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d",&n);
^
./Main.cpp:56:20: 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
137 ms
8056 KB
001.txt
AC
136 ms
8056 KB
002.txt
AC
139 ms
8056 KB
003.txt
AC
138 ms
8056 KB
004.txt
AC
141 ms
8056 KB
005.txt
AC
139 ms
8056 KB
006.txt
AC
140 ms
8056 KB
007.txt
AC
143 ms
8056 KB
008.txt
AC
144 ms
8056 KB
009.txt
AC
145 ms
8056 KB
010.txt
AC
146 ms
8056 KB
011.txt
AC
146 ms
8180 KB
012.txt
AC
148 ms
8180 KB
013.txt
AC
147 ms
8180 KB
014.txt
AC
147 ms
8180 KB
015.txt
AC
148 ms
8180 KB
016.txt
AC
147 ms
8180 KB
017.txt
AC
149 ms
8180 KB
018.txt
AC
150 ms
8180 KB
019.txt
AC
149 ms
8180 KB
020.txt
AC
148 ms
8180 KB
021.txt
AC
15 ms
6656 KB
022.txt
AC
129 ms
8056 KB
023.txt
AC
61 ms
7292 KB
024.txt
AC
25 ms
6912 KB
025.txt
AC
81 ms
7416 KB
026.txt
AC
17 ms
6656 KB
027.txt
AC
104 ms
8056 KB
028.txt
AC
53 ms
7292 KB
029.txt
AC
51 ms
7292 KB
030.txt
AC
52 ms
7292 KB
031.txt
AC
107 ms
8056 KB
032.txt
AC
68 ms
7292 KB
033.txt
AC
68 ms
7292 KB
034.txt
AC
116 ms
8056 KB
035.txt
AC
22 ms
6784 KB
036.txt
AC
130 ms
8056 KB
037.txt
AC
100 ms
8056 KB
038.txt
AC
28 ms
6912 KB
039.txt
AC
76 ms
7292 KB
040.txt
AC
67 ms
7292 KB
041.txt
AC
130 ms
8056 KB
042.txt
AC
100 ms
8180 KB
043.txt
AC
100 ms
8180 KB
044.txt
AC
155 ms
8180 KB
045.txt
AC
3 ms
6400 KB
046.txt
AC
32 ms
8056 KB
047.txt
AC
154 ms
8180 KB
048.txt
AC
29 ms
8056 KB
049.txt
AC
32 ms
8056 KB
050.txt
AC
42 ms
8056 KB
051.txt
AC
62 ms
8056 KB
052.txt
AC
89 ms
8056 KB
053.txt
AC
117 ms
8056 KB
054.txt
AC
148 ms
8056 KB
055.txt
AC
27 ms
8056 KB
056.txt
AC
30 ms
8056 KB
057.txt
AC
40 ms
8056 KB
058.txt
AC
57 ms
8056 KB
059.txt
AC
85 ms
8056 KB
060.txt
AC
112 ms
8056 KB
061.txt
AC
140 ms
8056 KB
062.txt
AC
96 ms
8056 KB
063.txt
AC
86 ms
8056 KB
example0.txt
AC
3 ms
6400 KB
example1.txt
AC
3 ms
6400 KB