Cod sursa(job #470010)

Utilizator APOCALYPTODragos APOCALYPTO Data 10 iulie 2010 16:13:00
Problema Congr Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
/* 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;

}