QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#684779 | #6434. Paimon Sorting | catch-up-from-behind# | AC ✓ | 78ms | 5012kb | C++17 | 1.6kb | 2024-10-28 15:49:18 | 2024-10-28 15:49:18 |
Judging History
answer
#include <bits/stdc++.h>
#define F(i,x,y) for(int i=(x);i<=(y);i++)
#define DF(i,x,y) for(int i=(x);i>=(y);i--)
#define ms(x,y) memset(x,y,sizeof(x))
#define SZ(x) (int)x.size()-1
#define all(x) x.begin(),x.end()
#define pb push_back
using namespace std;
typedef long long LL;
typedef unsigned long long ull;
typedef pair<int,int> pii;
template<typename T> void chkmax(T &x,T y){ x=max(x,y);}
template<typename T> void chkmin(T &x,T y){ x=min(x,y);}
template<typename T> void read(T &FF){
FF=0;int RR=1;char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if(ch=='-') RR=-1;
for(;isdigit(ch);ch=getchar()) FF=(FF<<1)+(FF<<3)+ch-48;
FF*=RR;
}
const int N=100010;
int n,a[N];
struct fenwick{
int tr[N];
#define lowbit(x) x&-x
void clr(){ F(i,1,n) tr[i]=0;}
void add(int x){ for(;x<=n;x+=lowbit(x)) tr[x]++;}
int ask(int x){ int res=0;for(;x;x-=lowbit(x)) res+=tr[x];return res;}
}fwk;
int cnt[N];
void work(){
read(n);
F(i,1,n) read(a[i]);
F(i,1,n) cnt[i]=0;
fwk.clr();
int mx=a[1];
if(n==1) printf("0");
else printf("0 ");
fwk.add(a[1]),cnt[a[1]]++;
LL ans=0;
int S=0;bool fl=0;
F(i,2,n){
if(mx>a[i]) ans+=fwk.ask(n)-fwk.ask(a[i]);
else if(mx<a[i]) ans+=2+fl*S,fl=0,mx=a[i];
else if(mx==a[i]&&cnt[a[i]]==1) S=0,fl=1;
S++;
if(!cnt[a[i]]) fwk.add(a[i]);
cnt[a[i]]++;
if(i==n) printf("%lld",ans);
else printf("%lld ",ans);
}puts("");
}
int main(){
int T;read(T);
while(T--) work();
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3784kb
input:
3 5 2 3 2 1 5 3 1 2 3 1 1
output:
0 2 3 5 7 0 2 4 0
result:
ok 3 lines
Test #2:
score: 0
Accepted
time: 78ms
memory: 5012kb
input:
6107 19 10 13 8 8 11 18 12 9 15 19 6 13 11 11 17 9 14 2 18 12 1 8 10 2 10 2 6 1 5 9 5 7 16 14 4 2 15 12 14 10 3 2 9 15 4 12 9 5 15 10 3 2 5 6 7 8 6 1 6 4 18 6 5 12 12 11 2 10 10 5 10 13 15 13 10 17 7 11 2 1 1 2 1 1 3 2 1 2 17 11 15 3 10 7 15 15 10 5 17 3 3 14 13 11 11 2 3 2 2 3 7 6 1 7 5 3 5 1 7 2 1...
output:
0 2 4 6 7 9 11 16 17 19 28 31 36 41 43 51 55 67 68 0 2 4 6 6 8 10 14 17 18 22 25 0 1 3 5 7 8 11 16 22 26 26 31 33 37 42 42 0 1 3 5 7 9 11 17 19 23 0 1 3 3 4 8 10 12 16 18 27 29 30 34 36 42 46 55 0 0 0 0 1 1 0 2 4 6 9 9 9 11 15 21 27 33 35 38 42 46 55 0 0 3 0 1 3 5 8 10 14 0 1 3 4 6 9 9 0 1 1 3 7 11 ...
result:
ok 6107 lines