Advertisement
Wooph

cerc

Feb 25th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. #include<fstream>
  2. #include <iostream>
  3. #include<algorithm>
  4. using namespace std;
  5. ifstream f("cerc.in");
  6. ofstream g("cerc.out");
  7. int st[20],n,v[20],maxi,sol[20];
  8. void citire()
  9. {
  10.     f>>n;
  11.     for(int i=1;i<=n;i++)
  12.         f>>v[i];
  13. }
  14. int valid(int niv)
  15. {
  16.     int i,ok=0;
  17.     for(i=1; i<niv; i++)
  18.         if(st[i]==st[niv])
  19.             return 0;
  20.             for(i=1;i<niv;i++)
  21.                 if(v[st[i]]==v[n])
  22.                 ok=1;
  23.             if(ok==0)
  24.             if(v[st[niv-1]]>v[st[niv]])
  25.             return 0;
  26.             if(ok==1)
  27.                   if(v[st[niv-1]]<v[st[niv]])
  28.                   return 0;
  29.  
  30.     return 1;
  31.  
  32. }
  33. void sumamax()
  34. {
  35.     int s=0,i;
  36.     for(i=1;i<n;i++)
  37.     s=s+v[st[i]]*v[st[i+1]];
  38.     s=s+v[st[1]]*v[st[n]];
  39.     if(s>maxi)
  40.     {
  41.         maxi=s;
  42.         for(i=1;i<=n;i++)
  43.             sol[i]=v[st[i]];
  44.     }
  45. }
  46. void afisare_stiva()
  47. {
  48.     int i;
  49.     for(i=1; i<=n; i++)
  50.         g<<sol[i]<<" ";
  51.     g<<endl;
  52. }
  53. void back(int nivel)
  54. {
  55.     if(nivel>n) sumamax();
  56.     else
  57.     {
  58.         for(int i=1; i<=n; i++)
  59.         {
  60.             st[nivel]=i;
  61.              if(valid(nivel))back(nivel+1);
  62.         }
  63.     }
  64. }
  65. int main ()
  66. {
  67. citire();
  68. sort(v+1,v+1+n);
  69. back(1);
  70. afisare_stiva();
  71. return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement