Advertisement
Guest User

Untitled

a guest
May 8th, 2016
431
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.24 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef tuple<int,int,int> Day;
  4. typedef pair<int,int> Par;
  5.  
  6. int main()
  7. {
  8.     ios_base::sync_with_stdio(false);
  9.     int T;
  10.     scanf("%d", &T);
  11.     for (int t = 1; t <= T; t++)
  12.     {
  13.         int J,P,S,K;
  14.         scanf("%d %d %d %d", &J, &P, &S, &K);
  15.  
  16.         srand(time(NULL));
  17.         pair<int,set<Day>> best(0,set<Day>());
  18.         for (int r = 0; r < 10000; r++)
  19.         {
  20.             map<Par,int> C1,C2,C3;
  21.             set<Day> st;
  22.             for (int i = 1; i <= J; i++)
  23.                 for (int j = 1; j <= P; j++)
  24.                     for (int k = 1; k <= S; k++)
  25.                         if (rand()%100>10 && C1[Par(i,j)] < K && C2[Par(i,k)] < K && C3[Par(j,k)] < K)
  26.                         {
  27.                             st.insert(Day(i,j,k));
  28.                             C1[Par(i,j)]++;
  29.                             C2[Par(i,k)]++;
  30.                             C3[Par(j,k)]++;
  31.                         }
  32.             for (int i = 1; i <= J; i++)
  33.                 for (int j = 1; j <= P; j++)
  34.                     for (int k = 1; k <= S; k++)
  35.                         if (st.find(Day(i,j,k)) == st.end() && C1[Par(i,j)] < K && C2[Par(i,k)] < K && C3[Par(j,k)] < K)
  36.                         {
  37.                             st.insert(Day(i,j,k));
  38.                             C1[Par(i,j)]++;
  39.                             C2[Par(i,k)]++;
  40.                             C3[Par(j,k)]++;
  41.                         }
  42.             best = max(best, make_pair((int)st.size(),st));
  43.         }
  44.         printf("Case #%d: %d\n", t, best.first);
  45.         for (auto d : best.second)
  46.         {
  47.             tie(J,P,S) = d;
  48.             printf("%d %d %d\n", J, P, S);
  49.         }
  50.     }
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement