| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1323880 | ayhamzaidd | Cryptography (NOI20_crypto) | C++20 | 328 ms | 28600 KiB |
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll N=3e5+5,MOD=1e9+7;
ll ft[N],n;
void update(ll id,ll v){
for(int i=id; i<=n; i+=i&-i)ft[i]+=v;
}
ll query(ll id){
ll sum=0;
for(int i=id; i>=1; i-=i&-i)sum+=ft[i];
return sum;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int t=1;//cin>>t;
while(t--){
cin>>n;
ll fac[n+5];
fac[0]=1;
for(ll i=1; i<=n; i++)fac[i]=(fac[i-1]*i)%MOD;
ll a[n+5],b[n+5];
map<ll,ll> mp;
for(int i=1; i<=n; i++)cin>>a[i],b[i]=a[i];
sort(a+1,a+n+1);
for(int i=1; i<=n; i++){
mp[a[i]]=i;
update(i,1);
}
//for(int i=1; i<=n; i++)cout<<mp[b[i]]<<" ";
ll ans=1;
for(int i=1; i<=n; i++){
ll c=query(mp[b[i]])-1;
//cout<<c<<" ";
ans=(ans+(c*fac[n-i])%MOD)%MOD;
update(mp[b[i]],-1);
//cout<<ans<<" ";
}
cout<<ans;
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
