-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathF.cpp
64 lines (61 loc) · 1.56 KB
/
F.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
* sto Qingyu orz
* 感谢真神sqy无私的教诲。膜时队者处处阿克,只因大师sqy在他背后。不膜大师者违背了真神的旨意,真神必将降下天谴,
* 使其天天爆零
* 我不由自主地膜拜真神sqy。
* Author: RainAir
* Time: 2019-10-18 20:49:25
*/
#include <algorithm>
#include <iostream>
#include <cstring>
#include <climits>
#include <cstdlib>
#include <cstdio>
#include <bitset>
#include <vector>
#include <cmath>
#include <ctime>
#include <queue>
#include <stack>
#include <map>
#include <set>
#define fi first
#define se second
#define U unsigned
#define P std::pair
#define LL long long
#define pb push_back
#define MP std::make_pair
#define all(x) x.begin(),x.end()
#define CLR(i,a) memset(i,a,sizeof(i))
#define FOR(i,a,b) for(int i = a;i <= b;++i)
#define ROF(i,a,b) for(int i = a;i >= b;--i)
#define DEBUG(x) std::cerr << #x << '=' << x << std::endl
const int MAXN = 2e5 + 5;
int a[MAXN],n;
int ans[MAXN];
std::vector<int> S[MAXN];
int main(){
scanf("%d",&n);
FOR(i,0,n-1) scanf("%d",a+i);
FOR(i,1,n-1){
// fa(i) = i/k;
int r;
for(int l = 1;l <= n;l = r+1){
if(((i-1)/l) != 0) r = (i-1)/((i-1)/l);
else r = n;
int fa = (i-1)/l;
// if(i == 1) r = n;
// if(fa == 0) r = n;
// DEBUG(i);DEBUG(l);DEBUG(r);
// DEBUG(a[i]);DEBUG(a[fa]);
if(a[fa] <= a[i]) continue;
++ans[l];--ans[r+1];
}
}
FOR(i,1,n) ans[i] += ans[i-1];
FOR(i,1,n-1) printf("%d ",ans[i]);
puts("");
return 0;
}