Pagini recente » Borderou de evaluare (job #780109) | Cod sursa (job #2147624)
#include <cstdio>
using namespace std;
struct TURN{
int nr=-1,values[1001];
};
TURN v[1001],v2[1001];
void copyv(int n){
for(int i=0;i<n;i++)
{
v[i].nr=v2[i].nr;
for(int j=1;j<=v[i].nr;j++)
{
v[i].values[j]=v2[i].values[j];
}
}
}
int main()
{
freopen("zid.in","r",stdin);
freopen("zid.out","w",stdout);
int n,i,x,j,k;
scanf("%d", &n);
v[0].nr++;v2[0].nr++;
for(i=1;i<=n;i++)
{
scanf("%d", &x);
for(j=0;j<n;j++)
{
if(v[j].nr!=-1)
{
if(v[(j+x)%n].nr==-1)
{
v2[(j+x)%n].nr=v[j].nr+1;
for(k=1;k<=v[j].nr;k++)
{
v2[(j+x)%n].values[k]=v[j].values[k];
}
v2[(j+x)%n].values[k]=x;
}
}
if((j+x)%n==0 && v[j].nr!=-1)
{
v2[0].nr=v[j].nr+1;
for(k=1;k<=v[j].nr;k++)
{
v2[0].values[k]=v[j].values[k];
}
v2[0].values[k]=x;
}
}
copyv(n);
if(v[0].nr>0)break;
}
printf("%d\n", v[0].nr);
for(i=1;i<=v[0].nr;i++)
{
printf("%d ",v[0].values[i]);
}
return 0;
}