delete pics to save space
This commit is contained in:
62
2.10570.cpp
Normal file
62
2.10570.cpp
Normal file
@ -0,0 +1,62 @@
|
||||
#include<stdio.h>
|
||||
#include<string.h>
|
||||
#define MAXD 510
|
||||
#define INF 0x3fffffff
|
||||
int a[MAXD], ans[MAXD], g[MAXD], min, N;
|
||||
int exchange()
|
||||
{
|
||||
int i, j, k, cnt = 0;
|
||||
for(i = 1; i <= N; i ++)
|
||||
if(ans[i] != i)
|
||||
{
|
||||
g[ans[i]] = g[i];
|
||||
ans[g[i]] = ans[i];
|
||||
cnt ++;
|
||||
}
|
||||
return cnt;
|
||||
}
|
||||
void solve()
|
||||
{
|
||||
int i, j, k, start, cnt;
|
||||
for(i = 1; i <= N; i ++)
|
||||
scanf("%d", &a[i]);
|
||||
min = INF;
|
||||
for(start = 1; start <= N; start ++)
|
||||
{
|
||||
for(i = 1, j = start; i <= N; i ++, j ++)
|
||||
{
|
||||
if(j > N)
|
||||
j = 1;
|
||||
ans[i] = a[j];
|
||||
g[a[j]] = i;
|
||||
}
|
||||
cnt = exchange();
|
||||
if(cnt < min)
|
||||
min = cnt;
|
||||
}
|
||||
for(start = 1; start <= N; start ++)
|
||||
{
|
||||
for(i = 1, j = start; i <= N; i ++, j --)
|
||||
{
|
||||
if(j == 0)
|
||||
j = N;
|
||||
ans[i] = a[j];
|
||||
g[a[j]] = i;
|
||||
}
|
||||
cnt = exchange();
|
||||
if(cnt < min)
|
||||
min = cnt;
|
||||
}
|
||||
printf("%d\n", min);
|
||||
}
|
||||
int main()
|
||||
{
|
||||
while(1)
|
||||
{
|
||||
scanf("%d", &N);
|
||||
if(!N)
|
||||
break;
|
||||
solve();
|
||||
}
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user