Pagini recente » Cod sursa (job #936064) | Cod sursa (job #2797725) | Istoria paginii runda/oni2009x2 | Cod sursa (job #2208043) | Cod sursa (job #309035)
Cod sursa(job #309035)
#include<iostream>
#include<stdio.h>
#define dim 301
using namespace std;
struct bugy
{
int val;
int ind;
};
bugy v[dim], w[dim];
void merge_sort(int li, int ls)
{
int j,i,k,jum;
if(li==ls) return;
jum=(li+ls)/2;
merge_sort(li,jum);
merge_sort(jum+1,ls);
i=li;j=jum+1;k=li;
while((i<=jum)||(j<=ls))
{
if(j>ls || ( (i<=jum) && (v[i].val < v[j].val)) )
{
w[k] = v[i];
k++;
i++;
}
else
{
w[k] = v[j];
k++;
j++;
}
}
for(i = li; i <= ls; i++)
v[i] = w[i];
}
struct bugy2
{
int r;
int s;
} mutari[2*dim];
int main()
{
FILE *f=fopen("grozavesti.in","r"), *g=fopen("grozavesti.out","w");
int n,mm, i, j, x;
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{fscanf(f,"%d",&x);
if(i==j)
{v[i].val=x;
v[i].ind=i;
}
}
merge_sort(1,n);
mm=1;
int man;
for(i=1;i<=n;i++)
if(i!=v[i].ind)
{
mutari[mm].r=i;
mutari[mm].s=v[i].ind;
mm++;
man = v[i].ind;
v[i].ind=i;
for(j=i+1;j<=n;j++)
if(v[j].ind==i)
v[j].ind=man;
}
if(mm==1)
fprintf(g,"0\n");
else{
fprintf(g,"%d\n",2*mm-2);
for(i=1;i<mm;i++)
fprintf(g,"L %d %d\nC %d %d\n",mutari[i].r, mutari[i].s, mutari[i].r, mutari[i].s);
}
return 0;
}