提出 #47373650
ソースコード 拡げる
//vanitas vanitatum et omnia vanitas
#include<bits/stdc++.h>
#define fi first
#define se second
#define eb emplace_back
#define mp make_pair
using namespace std;
typedef long double ld;
typedef long long ll;
typedef unsigned long long ull;
typedef __int128 i128;
template<typename T,typename U>
T ceil(T x, U y) {return (x>0?(x+y-1)/y:x/y);}
template<typename T,typename U>
T floor(T x, U y) {return (x>0?x/y:(x-y+1)/y);}
template<class T,class S>
bool chmax(T &a,const S b) {return (a<b?a=b,1:0);}
template<class T,class S>
bool chmin(T &a,const S b) {return (a>b?a=b,1:0);}
int popcnt(int x) {return __builtin_popcount(x);}
int popcnt(ll x) {return __builtin_popcountll(x);}
int topbit(int x) {return (x==0?-1:31-__builtin_clz(x));}
int topbit(ll x) {return (x==0?-1:63-__builtin_clzll(x));}
int lowbit(int x) {return (x==0?-1:__builtin_ctz(x));}
int lowbit(ll x) {return (x==0?-1:__builtin_ctzll(x));}
#define int long long
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define per(i,a,b) for(int i=(a);i>=(b);i--)
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef vector<pii> vp;
typedef tuple<int,int,int> tiii;
int read() {
int x=0,w=1; char c=getchar();
while(!isdigit(c)) {if(c=='-') w=-1; c=getchar();}
while(isdigit(c)) {x=x*10+(c-'0'); c=getchar();}
return x*w;
}
const int N=3005,mod=1e9+7,inv2=(mod+1)/2;
int n,m,x[N],y[N],f[N][N],g[N][N],p[N];
signed main() {
n=read(), m=read();
rep(i,1,n) p[i]=read();
rep(i,1,m) x[i]=read(), y[i]=read();
rep(i,1,n) rep(j,1,i-1) f[i][j]=1;
per(i,m,1) {
int a=x[i], b=y[i];
rep(i,1,n) g[i][a]=g[a][i]=g[i][b]=g[b][i]=0;
rep(i,1,n) if(i!=a&&i!=b) {
g[a][i]=(g[a][i]+f[b][i])%mod;
g[b][i]=(g[b][i]+f[a][i])%mod;
g[i][a]=(g[i][a]+f[i][b])%mod;
g[i][b]=(g[i][b]+f[i][a])%mod;
}
g[a][b]=(g[a][b]+f[b][a])%mod;
g[b][a]=(g[b][a]+f[a][b])%mod;
rep(i,1,n) if(i!=a&&i!=b) {
f[a][i]=(f[a][i]+g[a][i])*inv2%mod;
f[b][i]=(f[b][i]+g[b][i])*inv2%mod;
f[i][a]=(f[i][a]+g[i][a])*inv2%mod;
f[i][b]=(f[i][b]+g[i][b])*inv2%mod;
}
f[a][b]=(f[a][b]+g[a][b])*inv2%mod;
f[b][a]=(f[b][a]+g[b][a])*inv2%mod;
}
int ans=0;
rep(i,1,n) rep(j,1,n) if(p[i]<p[j]) ans=(ans+f[i][j])%mod;
rep(i,1,m) ans=ans*2%mod;
printf("%lld\n",ans);
return 0;
}
提出情報
| 提出日時 |
|
| 問題 |
D - Inversion Sum |
| ユーザ |
lgdmeow |
| 言語 |
C++ 20 (gcc 12.2) |
| 得点 |
1000 |
| コード長 |
2368 Byte |
| 結果 |
AC |
| 実行時間 |
954 ms |
| メモリ |
144748 KiB |
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
1000 / 1000 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
s1.txt, s2.txt, s3.txt |
| All |
01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, s1.txt, s2.txt, s3.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 01.txt |
AC |
909 ms |
144744 KiB |
| 02.txt |
AC |
909 ms |
144664 KiB |
| 03.txt |
AC |
760 ms |
144436 KiB |
| 04.txt |
AC |
758 ms |
144748 KiB |
| 05.txt |
AC |
903 ms |
144740 KiB |
| 06.txt |
AC |
753 ms |
144516 KiB |
| 07.txt |
AC |
916 ms |
144396 KiB |
| 08.txt |
AC |
918 ms |
144704 KiB |
| 09.txt |
AC |
763 ms |
144704 KiB |
| 10.txt |
AC |
914 ms |
144652 KiB |
| 11.txt |
AC |
764 ms |
144392 KiB |
| 12.txt |
AC |
771 ms |
144748 KiB |
| 13.txt |
AC |
696 ms |
144572 KiB |
| 14.txt |
AC |
692 ms |
144596 KiB |
| 15.txt |
AC |
712 ms |
144544 KiB |
| 16.txt |
AC |
930 ms |
144608 KiB |
| 17.txt |
AC |
714 ms |
144496 KiB |
| 18.txt |
AC |
954 ms |
144492 KiB |
| 19.txt |
AC |
730 ms |
144492 KiB |
| 20.txt |
AC |
908 ms |
144688 KiB |
| 21.txt |
AC |
919 ms |
144600 KiB |
| 22.txt |
AC |
761 ms |
144700 KiB |
| 23.txt |
AC |
689 ms |
144500 KiB |
| 24.txt |
AC |
917 ms |
144544 KiB |
| 25.txt |
AC |
926 ms |
144496 KiB |
| 26.txt |
AC |
746 ms |
144444 KiB |
| 27.txt |
AC |
918 ms |
144472 KiB |
| 28.txt |
AC |
921 ms |
144612 KiB |
| 29.txt |
AC |
742 ms |
144492 KiB |
| 30.txt |
AC |
745 ms |
144524 KiB |
| 31.txt |
AC |
751 ms |
144496 KiB |
| 32.txt |
AC |
690 ms |
144552 KiB |
| 33.txt |
AC |
911 ms |
144708 KiB |
| 34.txt |
AC |
889 ms |
144524 KiB |
| 35.txt |
AC |
1 ms |
3700 KiB |
| 36.txt |
AC |
1 ms |
3728 KiB |
| s1.txt |
AC |
1 ms |
3904 KiB |
| s2.txt |
AC |
1 ms |
3724 KiB |
| s3.txt |
AC |
1 ms |
3764 KiB |