제출 #1309061

#제출 시각아이디문제언어결과실행 시간메모리
1309061JuanJLArranging Shoes (IOI19_shoes)C++20
25 / 100
146 ms48844 KiB
#include "shoes.h" #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #define fst first #define snd second #define pb push_back #define forn(i,a,b) for(int i = a; i<b; i++) #define SZ(x) (int)x.size() #define ALL(x) x.begin(),x.end() #define mset(a,v) memset(a,v,sizeof(a)) #define FIN ios::sync_with_stdio(0); cout.tie(); cin.tie(0); using namespace std; using namespace __gnu_pbds; typedef long long ll; template <typename L> using iset = tree<L,null_type,less<L>,rb_tree_tag,tree_order_statistics_node_update>; long long count_swaps(std::vector<int> s) { ll n = SZ(s); ll res = 0; vector<vector<ll>> cntp(3*n+5); vector<vector<ll>> cntn(3*n+5); forn(i,0,n){ if(s[i]<0) cntn[s[i]*-1].pb(i); else cntp[s[i]].pb(i); } vector<bool> vis(3*n+5,0); iset<ll> ist; forn(i,0,n) ist.insert(i); forn(i,0,n)if(!vis[i]){ vis[i]=true; ist.erase(i); //cout<<s[i]<<" con indice -> "; if(s[i]<0){ ll j = lower_bound(ALL(cntp[s[i]*-1]),i)-cntp[s[i]*-1].begin(); auto it = ist.lower_bound(cntp[s[i]*-1][j]); res+=ist.order_of_key(*it); //cout<<*it<<'\n'; vis[*it]=true; ist.erase(it); }else{ ll j = lower_bound(ALL(cntn[s[i]]),i)-cntp[s[i]].begin(); auto it = ist.lower_bound(cntp[s[i]][j]); res+=1+ist.order_of_key(*it); //cout<<*it<<'\n'; vis[*it]=true; ist.erase(it); } } return res; }
#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...