Advertisement
NgJaBach

Livestock Lineup

Jan 23rd, 2023
645
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.24 KB | None | 0 0
  1. // NgJaBach: Forever Meadow <3
  2.  
  3. #include<bits/stdc++.h>
  4.  
  5. using namespace std;
  6. typedef long long int ll;
  7. typedef unsigned long long ull;
  8. #define pb push_back
  9. #define pob pop_back
  10. #define mp make_pair
  11. #define upb upper_bound
  12. #define lwb lower_bound
  13. #define bend(a) a.begin(),a.end()
  14. #define rev(x) reverse(bend(x))
  15. #define mset(a) memset(a, 0, sizeof(a))
  16. #define fi first
  17. #define se second
  18. #define gcd __gcd
  19. #define getl(s) getline(cin, s);
  20. #define setpre(x) fixed << setprecision(x)
  21. #define endl '\n'
  22. const int N=200050,M=1000000007;
  23. const ll INF=1e18+7;
  24. map<string,set<string> >beside;
  25. bool check(vector<string>A){
  26.     map<string,int>totalbeside;
  27.     for(int i=1;i<8;++i){
  28.         if(beside[A[i-1]].count(A[i])){
  29.             ++totalbeside[A[i]];
  30.             ++totalbeside[A[i-1]];
  31.         }
  32.     }
  33.     for(auto tmp:A) if(totalbeside[tmp]!=(int)beside[tmp].size()) return false;
  34.     return true;
  35. }
  36. vector<string> minvec(vector<string>a,vector<string>b){
  37.     for(int i=0;i<8;++i){
  38.         if(a[i]<b[i]) return a;
  39.         else if(a[i]>b[i]) return b;
  40.     }
  41.     return a;
  42. }
  43. int main(){
  44.     ios_base::sync_with_stdio(NULL); cin.tie(nullptr); cout.tie(nullptr);
  45.     freopen("lineup.in","r",stdin);
  46.     freopen("lineup.out","w",stdout);
  47.     int t;
  48.     string a,b,c;
  49.     vector<string>vec,ans;
  50.     cin>>t;
  51.     while(t--){
  52.         cin>>a;
  53.         cin>>c; cin>>c; cin>>c; cin>>c;
  54.         cin>>b;
  55. //      cout<<"--> "<<a<<" "<<b<<endl;
  56.         beside[a].insert(b);
  57.         beside[b].insert(a);
  58.     }
  59.     vec.pb("Bessie");
  60.     vec.pb("Buttercup");
  61.     vec.pb("Belinda");
  62.     vec.pb("Beatrice");
  63.     vec.pb("Bella");
  64.     vec.pb("Blue");
  65.     vec.pb("Betsy");
  66.     vec.pb("Sue");
  67.     sort(bend(vec));
  68.     ans.clear();
  69.     do{
  70.         if(check(vec)){
  71.             if(ans.empty()) ans=vec;
  72.             else ans=minvec(ans,vec);
  73.         }
  74.     }while(next_permutation(bend(vec)));
  75.     for(auto tmp:ans) cout<<tmp<<endl;
  76.     return 0;
  77. }
  78. /*
  79. ==================================+
  80. INPUT:                            |
  81. ------------------------------    |
  82. 3
  83. Buttercup must be milked beside Bella
  84. Blue must be milked beside Bella
  85. Sue must be milked beside Beatrice
  86. ------------------------------    |
  87. ==================================+
  88. OUTPUT:                           |
  89. ------------------------------    |
  90.  
  91. ------------------------------    |
  92. ==================================+
  93. */
  94.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement