제출 #826889

#제출 시각아이디문제언어결과실행 시간메모리
826889vjudge1Arranging Shoes (IOI19_shoes)C++17
50 / 100
1084 ms5968 KiB
#include<bits/stdc++.h> #include "shoes.h" using namespace std; #define all(x) x.begin(), x.end() #define pb push_back #define ll long long #define vout(v) for(int i=0; i<v.size(); i++) cout<<v[i]<<' '; int tt[10]; int t[1000100], b[1001000]; void build(int v, int l, int r){ if(l == r){ t[v] = 1; return; } int mid=(l+r)/2; build(v+v, l, mid); build(v+v+1, mid+1, r); t[v] = t[v+v]+t[v+v+1]; } void upd(int v, int l, int r, int pos, int x){ if(l == r){ t[v] = x; return; } int mid=(l+r)/2; if(mid>=pos){ upd(v+v, l, mid, pos, x); } else{ upd(v+v+1, mid+1, r, pos, x); } t[v] = t[v+v]+t[v+v+1]; } int get(int v, int l, int r, int L, int R){ if(r < L or R < l){ return 0; } if(L <= l and r <= R){ return t[v]; } int mid=(l+r)/2; return get(v+v, l, mid, L, R) + get(v+v+1, mid+1, r, L, R); } int pos1[400100], pos0[400100]; long long count_swaps(vector<int> a){ int n = a.size(); for(int i=0; i<n; i++){ if(a[i] > 0) pos0[a[i]] = i; else pos1[-a[i]] = i; b[i] = 1; } ll ans=0; build(1, 1, n); for(int i=0; i<n; i+=2){ if(a[i] > 0){ for(int j=i+1; j<n; j++){ if(a[j] == -a[i]){ for(int k=j; k>i; k--){ swap(a[k], a[k-1]); ans++; } break; } } } else{ for(int j=i+1; j<n; j++){ if(a[j] == -a[i]){ for(int k=j; k>i+1; k--){ swap(a[k], a[k-1]); ans++; } break; } } } } return ans; }
#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...