답안 #250708

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
250708 2020-07-18T20:07:21 Z Blagojce Mountains (NOI20_mountains) C++17
22 / 100
113 ms 10740 KB
#include <bits/stdc++.h> 
#define fr(i, n, m) for(int i = (n); i < (m); i ++)
#define pb push_back
#define st first
#define nd second
#define pq priority_queue
#define all(x) begin(x), end(x)
#include <time.h>
#include <cmath>

using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;

const int i_inf = 1e9;
const ll inf = 1e18;
const ll mod = 1000000007;
const ld eps = 1e-13;
const ld pi  = 3.14159265359;
 
mt19937 _rand(time(NULL));
clock_t timer = clock();
const int mxn = 5e5;
 
const ll A = 911382323;
const ll B = 972663749;
 
ll modpow(ll x, ll n){
	if(n == 0) return 1%mod;
	ll u = modpow(x, n/2);
	u = (u * u) % mod;
	if(n % 2) u = (u * x) % mod;
	return u;
}
ll inverse(ll x){
	return modpow(x, mod-2);
}
ll add(ll ans, ll val){
	ans = (ans + val) % mod;
	return ans;
}
ll mul(ll ans, ll val){
	ans = (ans * val) % mod;
	return ans;
}
ll sub(ll ans, ll val){
	ans = (ans - val) % mod;
	if(ans < 0) ans += mod;
	return ans;
}
ll _div(ll ans, ll val){
	ans = (ans * inverse(val)) % mod;
	return ans;
}
ll fakt[mxn];
ll bc(ll n, ll k){
	return (fakt[n]*inverse((fakt[k]*fakt[n-k])%mod))%mod;
}
ll sq(ll x){
	return x*x;
}
ll rsum(ll a, ll b){
	return (b-a+1)*(a+b)/2;
}
void prec(){
	fakt[0] = 1;
	fr(i, 1, mxn){
		fakt[i] = mul(fakt[i-1], i);
	}
}

int bit[mxn];
void update(int k, int val){
	while(k < mxn){
		bit[k] += val;
		k += k&-k;
	}
}

int sum(int k){
	int s = 0;
	while(k > 0){
		s += bit[k];
		k -= k&-k;
	}
	return s;
}
void solve(){
	memset(bit, 0, sizeof(bit));
	
	
	int n;
	cin >> n;
	int a[n];
	vector<pii> v;
	fr(i, 0, n){
		cin >> a[i];
		v.pb({a[i], i});
	}
	sort(all(v));
	int val = 0;
	int pr = -1;
	for(auto u : v){
		if(u.st != pr) pr = u.st, ++val;
		a[u.nd] = val;
	}
	ll le[n];
	ll ri[n];
	
	memset(le, 0, sizeof(le));
	memset(ri, 0, sizeof(ri));
	
	fr(i, 0, n){
		le[i] = sum(a[i]-1);
		update(a[i], +1);
	}
	
	fr(i, 0, n) update(a[i],-1);
	
	for(int i = n-1; i >= 0; i --){
		ri[i] = sum(a[i]-1);
		update(a[i], +1);
	}
	ll ans = 0;
	fr(i, 0, n){
		ans += le[i]*ri[i];
	}
	cout<<ans<<endl;
	
}
 
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	solve();
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2304 KB Output is correct
2 Incorrect 56 ms 10720 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 90 ms 10596 KB Output is correct
2 Correct 97 ms 10592 KB Output is correct
3 Correct 92 ms 10716 KB Output is correct
4 Correct 88 ms 10624 KB Output is correct
5 Correct 94 ms 10720 KB Output is correct
6 Correct 91 ms 10720 KB Output is correct
7 Correct 89 ms 10716 KB Output is correct
8 Correct 71 ms 10596 KB Output is correct
9 Correct 73 ms 10600 KB Output is correct
10 Correct 1 ms 2304 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 90 ms 10596 KB Output is correct
2 Correct 97 ms 10592 KB Output is correct
3 Correct 92 ms 10716 KB Output is correct
4 Correct 88 ms 10624 KB Output is correct
5 Correct 94 ms 10720 KB Output is correct
6 Correct 91 ms 10720 KB Output is correct
7 Correct 89 ms 10716 KB Output is correct
8 Correct 71 ms 10596 KB Output is correct
9 Correct 73 ms 10600 KB Output is correct
10 Correct 1 ms 2304 KB Output is correct
11 Correct 100 ms 10740 KB Output is correct
12 Correct 105 ms 10628 KB Output is correct
13 Correct 102 ms 10592 KB Output is correct
14 Correct 104 ms 10592 KB Output is correct
15 Correct 102 ms 10716 KB Output is correct
16 Correct 101 ms 10592 KB Output is correct
17 Correct 101 ms 10592 KB Output is correct
18 Correct 64 ms 10600 KB Output is correct
19 Correct 67 ms 10596 KB Output is correct
20 Correct 1 ms 2304 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 2304 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 2304 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 90 ms 10596 KB Output is correct
2 Correct 97 ms 10592 KB Output is correct
3 Correct 92 ms 10716 KB Output is correct
4 Correct 88 ms 10624 KB Output is correct
5 Correct 94 ms 10720 KB Output is correct
6 Correct 91 ms 10720 KB Output is correct
7 Correct 89 ms 10716 KB Output is correct
8 Correct 71 ms 10596 KB Output is correct
9 Correct 73 ms 10600 KB Output is correct
10 Correct 1 ms 2304 KB Output is correct
11 Correct 100 ms 10740 KB Output is correct
12 Correct 105 ms 10628 KB Output is correct
13 Correct 102 ms 10592 KB Output is correct
14 Correct 104 ms 10592 KB Output is correct
15 Correct 102 ms 10716 KB Output is correct
16 Correct 101 ms 10592 KB Output is correct
17 Correct 101 ms 10592 KB Output is correct
18 Correct 64 ms 10600 KB Output is correct
19 Correct 67 ms 10596 KB Output is correct
20 Correct 1 ms 2304 KB Output is correct
21 Correct 106 ms 10728 KB Output is correct
22 Correct 103 ms 10592 KB Output is correct
23 Correct 111 ms 10716 KB Output is correct
24 Correct 113 ms 10592 KB Output is correct
25 Correct 110 ms 10732 KB Output is correct
26 Correct 104 ms 10712 KB Output is correct
27 Correct 106 ms 10624 KB Output is correct
28 Correct 75 ms 10720 KB Output is correct
29 Correct 75 ms 10600 KB Output is correct
30 Correct 1 ms 2304 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2304 KB Output is correct
2 Incorrect 56 ms 10720 KB Output isn't correct
3 Halted 0 ms 0 KB -