Pagini recente » Cod sursa (job #1932908) | Cod sursa (job #1786370) | Cod sursa (job #2618102) | Cod sursa (job #2845001) | Cod sursa (job #466661)
Cod sursa(job #466661)
#include<fstream>
#include<vector>
#define dmax 300005
using namespace std;
ifstream in("congr.in");
ofstream out("congr.out");
int n,x[dmax],crt,ok;
vector<int>r[dmax];
vector<int>::iterator it;
struct st
{ int x;
int y;
} sol[dmax];
void bkt(int k,int s,int nr,int st)
{ int i,j;
if(ok)
{
if(s%n==0 && nr==n)
{ for(i=1;i<k;i++)
for(j=0;j<sol[i].y;j++)
out<<r[sol[i].x][j]<<" ";
/*for(i=1;i<k;i++)
out<<sol[i].x<<" ";
out<<'\n';
for(i=1;i<k;i++)
out<<sol[i].y<<" ";
out<<'\n'<<'\n';*/
ok=0;
}
else
{ for(i=st;i<n;i++)
for(j=1;j<=x[i];j++)
{ sol[k].x=i;
sol[k].y=j;
x[i]-=j;
if(nr+j <= n);
bkt(k+1,s+i*j,nr+j,i+1);
x[i]+=j;
}
}
}
}
int main()
{ int i,a;
in>>n;
for(i=1;i<2*n;i++)
{ in>>a;
while(a>=n)
a-=n;
x[a]++;
r[a].push_back(i);
}
in.close();
crt=0;
ok=1;
bkt(1,0,0,1);
out.close();
return 0;
}