제출 #404484

#제출 시각아이디문제언어결과실행 시간메모리
404484Theo830Arranging Shoes (IOI19_shoes)C++17
10 / 100
1083 ms14888 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; ll INF = 1e9+7; ll MOD = 998244353; typedef pair<ll,ll> ii; #define iii pair<ll,ii> #define f(i,a,b) for(ll i = a;i < b;i++) #define pb push_back #define vll vector<ll> #define F first #define S second #define all(x) (x).begin(), (x).end() ///I hope I will get uprating and don't make mistakes ///I will never stop programming ///sqrt(-1) Love C++ ///Please don't hack me ///@TheofanisOrfanou Theo830 ///Think different approaches (bs,dp,greedy,graphs,shortest paths,mst) ///Stay Calm ///Look for special cases ///Beware of overflow and array bounds ///Think the problem backwards ///Training ll count_inv(vll arr){ ll n = arr.size(); ll ans = 0; f(i,0,n){ f(j,i+1,n){ ans += (arr[i] > arr[j]); } } return ans; } long long count_swaps(vector<int> s){ ll m = s.size(); vll arr; arr.assign(m,0); ll a = 0; vll exo[m+5]; vll seira; f(i,0,m){ if(s[i] > 0){ exo[s[i]].pb(i); } } f(i,0,m+5){ reverse(all(exo[i])); } f(i,0,m){ if(s[i] < 0){ seira.pb(-s[i]); arr[i] = a; a += 2; } } a = 1; for(auto x:seira){ arr[exo[x].back()] = a; a += 2; exo[x].pop_back(); } return count_inv(arr); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...