Pagini recente »
Borderou de evaluare (job #582007)
|
Istoria paginii runda/2019-12-12-clasa-7-tema-14
|
Istoria paginii runda/2019-09-19-clasa-7-tema-1/clasament
|
Istoria paginii runda/2019-10-24-clasa-7-tema-7-optionala/clasament
|
Cod sursă (job #237647)
Cod sursă (job
#237647)
#include <stdio.h>
#include <stdlib.h>
int v[20001];
int pozcmax(int i, int x, int rotea){
int pas;
if(rotea)
pas=1;
else
pas=2;
int indmax=i,cimax=0,j,vecj,vecim;
for(j=i;j<i+2*x;j++){
if(v[j]>cimax){
indmax=j;
cimax=v[j];
}
else{
if(v[j]==cimax && rotea){
if(j%2==0)
vecj=v[j-1];
else
vecj=v[j+1];
if(indmax%2==0)
vecim=v[indmax-1];
else
vecim=v[indmax+1];
if(vecj>vecim){
indmax=j;
cimax=v[j];
}
}
}
}
return indmax;
}
int main()
{
FILE *fin, *fout;
int n,k2,rotea,i,indice,aux,j;
fin=fopen("domino.in","r");
fout=fopen("domino.out","w");
fscanf(fin,"%d %d %d",&n,&rotea,&k2);
for(i=1;i<=2*n;i++)
fscanf(fin,"%d",&v[i]);
i=1;
while(k2 && i+(k2*2)<=2*n){
//printf("PENTRU i = %d ",i);
indice=pozcmax(i,k2+1,rotea);
//printf(" AVEM %d\n",indice);
if(rotea && indice%2==0){
aux=v[indice];
v[indice]=v[indice-1];
v[indice-1]=aux;
rotea--;
}
k2=k2-(indice-i)/2;
for(j=i;j<indice-(indice+1)%2;j++)
v[j]=-1;
i=indice+1+indice%2;
}
if(k2!=0)
for(;i<=2*n;i++)
v[i]=-1;
for(i=1;i<=2*n;i++)
if(v[i]!=-1)
fprintf(fout,"%d",v[i]);
fclose(fin);
fclose(fout);
return 0;
}