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 "sorting.h"
#include <bits/stdc++.h>
using namespace std;
long long a[200069],dsu[200069],pst[200069],pr[200069];
long long fd(long long x)
{
if(dsu[x]!=x)
{
dsu[x]=fd(dsu[x]);
}
return dsu[x];
}
int findSwapPairs(int n,int aa[],int m,int ka[],int la[],int sq[],int sq2[])
{
long long i,j,lh,rh,md,zz,c;
for(lh=0,rh=m;lh<=rh;)
{
md=(lh+rh)/2;
for(i=0;i<n;i++)
{
a[i]=aa[i];
dsu[i]=i;
}
for(i=0;i<md;i++)
{
swap(a[ka[i]],a[la[i]]);
}
c=0;
for(i=0;i<n;i++)
{
c+=fd(i)!=fd(a[i]);
dsu[fd(i)]=fd(a[i]);
}
if(c<=md)
{
zz=md;
rh=md-1;
}
else
{
lh=md+1;
}
}
for(i=0;i<n;i++)
{
a[i]=aa[i];
pst[i]=i;
pr[i]=i;
}
for(i=0;i<zz;i++)
{
swap(a[ka[i]],a[la[i]]);
sq[i]=0;
sq2[i]=0;
}
for(i=zz-1;i+1;i--)
{
swap(pst[pr[ka[i]]],pst[pr[la[i]]]);
swap(pr[ka[i]],pr[la[i]]);
}
for(j=0,i=0;i<zz;i++)
{
swap(pst[pr[ka[i]]],pst[pr[la[i]]]);
swap(pr[ka[i]],pr[la[i]]);
for(;j<n&&a[j]==j;j++);
if(j==n)
{
break;
}
sq[i]=pst[j];
sq2[i]=pst[a[j]];
swap(a[j],a[a[j]]);
}
return zz;
}
Compilation message (stderr)
sorting.cpp: In function 'int findSwapPairs(int, int*, int, int*, int*, int*, int*)':
sorting.cpp:75:14: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
75 | sq[i]=pst[j];
| ~~~~~^
sorting.cpp:76:18: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
76 | sq2[i]=pst[a[j]];
| ~~~~~~~~^
sorting.cpp:79:9: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
79 | return zz;
| ^~
sorting.cpp:55:11: warning: 'zz' may be used uninitialized in this function [-Wmaybe-uninitialized]
55 | for(i=0;i<zz;i++)
| ~^~~
# | 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... |