Pagini recente » Cod sursa (job #2670748) | Cod sursa (job #2618645) | Cod sursa (job #3219643) | Cod sursa (job #3154417) | Cod sursa (job #470007)
Cod sursa(job #470007)
/* problema congr Stelele Informaticii 2010 (10-12)
* @author: Calin Dragos Ion
* Simulated Annealing
*/
using namespace std;
#include<iostream>
#include<fstream>
#include<ctime>
ofstream fout("congr.out");
int s1[600004], s2[600004],a[600004],N,P,t1=0,t2;
void solve()
{int sum;
t2=N;
for(int i=1;i<=P;i++)
{int x=rand()%t2+1;
s1[++t1]=s2[x];
s2[x]=s2[t2--];
sum=(sum+a[s1[t1]])%P;
}
while(sum)
{
int x=rand()%t1+1;
int y=rand()%t2+1;
sum=(sum-a[s1[x]]+a[s2[y]])%P;
int aux=s1[x];
s1[x]=s2[y];
s2[y]=aux;
}
for(int i=1;i<=P;i++)
fout<<s1[i]<<" ";
fout<<"\n";
}
void cit()
{
ifstream fin("congr.in");
fin>>P;
N=2*P-1;
for(int i=1;i<=N;i++)
{fin>>a[i];
a[i]%=P;
s2[i]=i;
}
fin.close();
}
int main()
{
srand(time(0));
cit();
solve();
fout.close();
return 0;
}