This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <stdio.h>
#include <vector>
#include "shoes.h"
//#include "grader.cpp"
using namespace std;
const int mxn = 2e6 + 10;
vector <int> li[mxn] = {};
int ta[mxn] = {},se[mxn] = {},u[mxn] = {},cou[mxn] = {};
int cre(int cl,int cr,int no)
{
if(cl == cr)
{
se[no] = 1;
return 0;
}
int mid = (cl+cr) / 2;
cre(cl,mid,no*2);
cre(mid+1,cr,no*2+1);
se[no] = se[no*2] + se[no*2+1];
return 0;
}
int del(int cl,int cr,int no,int tn)
{
if(cr < tn || cl > tn)
{
return 0;
}
if(cl == cr)
{
se[no] = 0;
return 0;
}
int mid = (cl+cr) / 2;
del(cl,mid,no*2,tn);
del(mid+1,cr,no*2+1,tn);
se[no] = se[no*2] + se[no*2+1];
return 0;
}
int fisu(int cl,int cr,int no,int tn)
{
if(cl > tn)
{
return 0;
}
if(cr <= tn)
{
return se[no];
}
int mid = (cl+cr) / 2,su = 0;
su += fisu(cl,mid,no*2,tn);
su += fisu(mid+1,cr,no*2+1,tn);
return su;
}
long long count_swaps(vector<int> s)
{
int i,j,n = s.size(),cpo,ans = 0;
cre(0,n-1,1);
for(i=0; i<n; i++)
{
if(s[i] > 0)
{
li[s[i]*2].push_back(i);
}
else
{
li[(-s[i] * 2) + 1].push_back(i);
}
}
for(i=0; i<n; i++)
{
if(u[i] == 0)
{
if(s[i] > 0)
{
cpo = li[s[i]*2+1][cou[s[i]*2+1]];
cou[s[i]*2+1] ++;
cou[s[i]*2] ++;
ans += fisu(0,n-1,1,cpo-1);
}
else
{
cpo = li[(-(s[i]*2))][cou[-s[i]*2]];
cou[-s[i]*2] ++;
cou[(-s[i]*2)+1] ++;
ans += fisu(0,n-1,1,cpo-1)-1;
}
del(0,n-1,1,cpo);
del(0,n-1,1,i);
u[i] = 1;
u[cpo] = 1;
}
}
return ans;
}
//int main()
//{
//
// return 0;
//}
Compilation message (stderr)
shoes.cpp: In function 'long long int count_swaps(std::vector<int>)':
shoes.cpp:57:11: warning: unused variable 'j' [-Wunused-variable]
57 | int i,j,n = s.size(),cpo,ans = 0;
| ^
# | 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... |