Pagini recente » Cod sursa (job #715631) | Cod sursa (job #758654) | Cod sursa (job #2290063) | Cod sursa (job #354350) | Cod sursa (job #470010)
Cod sursa(job #470010)
/* 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=2*P-1;
t1=0;
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!=0)
{
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;
}