# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
298214 | Abelyan | Arranging Shoes (IOI19_shoes) | C++17 | 176 ms | 73028 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;
#define FOR(i,n) for (int i=0;i<(n);++i)
const int N=1e6+6;
priority_queue<int> aj[N],dz[N];
int fw[N];
int n;
int get(int ind){
int ans=0;
for(;ind>=0;ind=(ind&(ind+1))-1){
ans+=fw[ind];
}
return ans;
}
void add(int ind,int val){
for(;ind<n;ind=ind|(ind+1)){
fw[ind]+=val;
}
}
bool col[N];
long long count_swaps(vector<int> s) {
n=s.size();
FOR(i,n){
if (s[i]<0){
dz[-s[i]].push(-i);
}
else{
aj[s[i]].push(-i);
}
}
long long ans=0;
int qan=0;
FOR(i,n){
if (col[i])continue;
int j;
if (s[i]<0){
dz[-s[i]].pop();
j=-aj[-s[i]].top();
aj[-s[i]].pop();
}
if (s[i]>0){
ans++;
aj[s[i]].pop();
j=-dz[s[i]].top();
dz[s[i]].pop();
}
col[j]=true;
ans+=j-2*qan-1+get(j);
add(j,-1);
add(0,1);
qan++;
}
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |