# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
782528 | Lyrically | 정렬하기 (IOI15_sorting) | C++17 | 14 ms | 480 KiB |
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<bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
#define pb push_back
#define rep(i,n) for(int i=0;i<n;i++)
#define rep1(i,n) for(int i=1;i<=n;i++)
int read(){int x;scanf("%d",&x);return x;}
void print(int x){printf("%d\n",x);}
void file(string s)
{
freopen((s+".in").c_str(),"r",stdin);
freopen((s+".out").c_str(),"w",stdout);
}
const int mod=998244353;
int r[200005];
int fa[200005];
bool vis[200005];
int findSwapPairs(int n,int s[],int m,int x[],int y[],int p[],int q[])
{
rep(j,m){p[j]=q[j]=0;}
if(is_sorted(s,s+n)){return 0;}
rep(i,m)
{
swap(s[x[i]],s[y[i]]);
rep(j,n)
{
//cout<<s[j]<<" ";
r[j]=s[j];
fa[s[j]]=j;vis[j]=0;
}
//cout<<endl;
int inv=n;
int cur=0;
bool fl=1;
rep(j,n)
{
if(!vis[j])
{
inv--;
//cout<<i<<" "<<j<<endl;
int now=j;
while(!vis[now])
{
vis[now]=1;
if(cur==m){fl=0;break;}
//cout<<now<<" "<<fa[now]<<endl;
p[cur]=now,q[cur]=fa[now];
cur++;
now=fa[now];
}
if(!fl){break;}
}
}
rep(j,n){s[j]=r[j];}
rep(j,m){p[j]=q[j]=0;}
if(fl&&inv<=i+1)
{
return i+1;
}
}
return -1;
}
Compilation message (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... |