Advertisement
Technoblade777

1 2 H

May 8th, 2023
586
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.37 KB | None | 0 0
  1. #include <iostream>
  2. #include<cmath>
  3. #include<limits>
  4. #include<fstream>
  5. #include<cstdlib>
  6. using namespace std;
  7.  
  8. bool isPos(int a, int b, int c)
  9. {
  10.     int n1, n2, n3;
  11.     if(a>0){n1 = 1;}
  12.     else{n1=-1;}
  13.     if(b>0){n2 = 1;}
  14.     else{n2=-1;}
  15.     if(c>0){n3 = 1;}
  16.     else{n3=-1;}
  17.     return a*b*c;
  18. }
  19.  
  20. int main() {
  21.     ifstream fin("/home/daminator/Desktop/Programming/YandexAlgorithms/1.0/Tasks2/input.txt");
  22.     if(!fin)
  23.     {
  24.         cerr << "Can't open file";
  25.         exit(1);
  26.     }
  27.     int x;
  28.     long long int neg = 0, zer = 0, pos = 0, k = 0;
  29.     int mn1 = INFINITY, mn2 = INFINITY, mn3 = INFINITY, mx1 = -INFINITY, mx2 = -INFINITY, mx3 = -INFINITY;
  30.     while(fin)
  31.     {
  32.         fin>>x;
  33.         k++;
  34.         if(x==0){zer++;}
  35.         else if(x>0){pos++;}
  36.         else if(x<0){neg++;}
  37.         if(x<mn1)
  38.         {
  39.             mn3 = mn2;
  40.             mn2 = mn1;
  41.             mn1 = x;
  42.         }
  43.         else if(x<mn2)
  44.         {
  45.             mn3 = mn2;
  46.             mn2 = x;
  47.         }
  48.         else if(x<mn3)
  49.         {
  50.             mn3 = x;
  51.         }
  52.  
  53.         if(x>mx1)
  54.         {
  55.             mx3 = mx2;
  56.             mx2 = mx1;
  57.             mx1 = x;
  58.         }
  59.         else if(x>mx2)
  60.         {
  61.             mx3 = mx2;
  62.             mx2 = x;
  63.         }
  64.         else if(x>mx3)
  65.         {
  66.             mx3 = x;
  67.         }
  68.     }
  69.     fin.close();
  70.     cout << "answer: "<<endl;
  71.     cout << k << endl;
  72.     cout << mn1 <<" "<<mn2<<" "<<mn3 << endl;
  73.     cout << mx1 <<" "<<mx2<<" "<<mx3 << endl;
  74.  
  75.     if(k==0){cout << " "; return 0;}
  76.     //zero answers
  77.     if(k==3){cout << mn1 <<" "<<mn2<<" "<<mn3; return 0;}
  78.     else if(neg+pos<=2){cout << mn1 <<" "<<mn2<<" "<<mn3; return 0;}
  79.     else if(pos==0&&zer!=0){cout << mx1 <<" "<<mx2<<" "<<mx3; return 0;}
  80.     else if(pos==2&&neg==1&&zer!=0){cout << mx1 <<" "<<mx2<<" "<<mx3; return 0;}
  81.  
  82.     //neg answers
  83.     if(neg!=0&&pos==0&&zer==0){cout << mx1 <<" "<<mx2<<" "<<mx3; return 0;}
  84.  
  85.     //pos answers
  86.     if(pos<=2){cout << mx1 <<" "<<mn1<<" "<<mn2; return 0;}
  87.     else
  88.     {
  89.         int p = numeric_limits<long long int>::max();
  90.         int opt1 = p-mx1+p-(abs(mn1))+p-abs(mn2);
  91.         int opt2 = p-(abs(mx1))+p-abs(mx2)+p-abs(mx3);
  92.         if(opt1 < opt2)
  93.         {
  94.             cout << mx1 <<" "<<mn1<<" "<<mn2; return 0;
  95.         }
  96.         else{cout << mx1 <<" "<<mx2<<" "<<mx3; return 0;}
  97.  
  98.  
  99.     }
  100.  
  101.  
  102. }
  103.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement