Advertisement
Guest User

TCO152C250pts_xudyh

a guest
Jul 18th, 2015
408
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.47 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,a,n) for (int i=a;i<(int)n;i++)
  4. #define per(i,a,n) for (int i=n-1;i>=a;i--)
  5. #define pb push_back
  6. #define mp make_pair
  7. #define all(x) (x).begin(),(x).end()
  8. #define fi first
  9. #define se second
  10. #define SZ(x) ((int)(x).size())
  11. #define ACCU accumulate
  12. #define TWO(x) (1<<(x))
  13. #define TWOL(x) (1ll<<(x))
  14. #define clr(a) memset(a,0,sizeof(a))
  15. typedef vector<int> VI;
  16. typedef vector<string> VS;
  17. typedef long long ll;
  18. typedef long double LD;
  19. typedef pair<int,int> PII;
  20. typedef vector<PII> VPII;
  21. const int inf=0x20202020;
  22. const ll mod=1000000007;
  23. const double eps=1e-9;
  24. const double pi=3.1415926535897932384626;
  25. ll powmod(ll a,ll b) {ll res=1;a%=mod;for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
  26. // head
  27.  
  28. int st[110];
  29. class YetAnotherCardGame {
  30.     public:
  31.         int maxCards(vector <int> petr, vector <int> snuke)  {
  32.             rep(i,1,101) st[i]=0;
  33.             rep(i,0,SZ(petr)) st[petr[i]]|=1;
  34.             rep(i,0,SZ(snuke)) st[snuke[i]]|=2;
  35.             int cs=2,c1=0,c2=0,ans=0,r1=SZ(petr),r2=SZ(snuke);
  36.             rep(i,1,101) {
  37.                 if (st[i]==0) continue;
  38.                 if (st[i]==3) {
  39.                     cs=3-cs; ans++;
  40.                     if (cs==1) r1--; else r2--;
  41.                 } else if (st[i]==2) {
  42.                     if (cs!=2) cs=2,ans++,r2--;
  43.                     else c2++;
  44.                 } else {
  45.                     if (cs!=1) cs=1,ans++,r1--;
  46.                     else c1++;
  47.                 }
  48.             }
  49.             return ans+min(c1+c2,min(r1,r2));
  50.         }
  51.    
  52. // BEGIN CUT HERE
  53.     public:
  54.     void run_test(int Case) { if ((Case == -1) || (Case == 0)) test_case_0(); if ((Case == -1) || (Case == 1)) test_case_1(); if ((Case == -1) || (Case == 2)) test_case_2(); if ((Case == -1) || (Case == 3)) test_case_3(); }
  55.     private:
  56.     template <typename T> string print_array(const vector<T> &V) { ostringstream os; os << "{ "; for (typename vector<T>::const_iterator iter = V.begin(); iter != V.end(); ++iter) os << '\"' << *iter << "\","; os << " }"; return os.str(); }
  57.     void verify_case(int Case, const int &Expected, const int &Received) { cerr << "Test Case #" << Case << "..."; if (Expected == Received) cerr << "PASSED" << endl; else { cerr << "FAILED" << endl; cerr << "\tExpected: \"" << Expected << '\"' << endl; cerr << "\tReceived: \"" << Received << '\"' << endl; } }
  58.     void test_case_0() { int Arr0[] = {2, 5}; vector <int> Arg0(Arr0, Arr0 + (sizeof(Arr0) / sizeof(Arr0[0]))); int Arr1[] = {3, 1}; vector <int> Arg1(Arr1, Arr1 + (sizeof(Arr1) / sizeof(Arr1[0]))); int Arg2 = 3; verify_case(0, Arg2, maxCards(Arg0, Arg1)); }
  59.     void test_case_1() { int Arr0[] = {1, 1, 1, 1, 1}; vector <int> Arg0(Arr0, Arr0 + (sizeof(Arr0) / sizeof(Arr0[0]))); int Arr1[] = {1, 1, 1, 1, 1}; vector <int> Arg1(Arr1, Arr1 + (sizeof(Arr1) / sizeof(Arr1[0]))); int Arg2 = 1; verify_case(1, Arg2, maxCards(Arg0, Arg1)); }
  60.     void test_case_2() { int Arr0[] = {1, 4, 6, 7, 3}; vector <int> Arg0(Arr0, Arr0 + (sizeof(Arr0) / sizeof(Arr0[0]))); int Arr1[] = {1, 7, 1, 5, 7}; vector <int> Arg1(Arr1, Arr1 + (sizeof(Arr1) / sizeof(Arr1[0]))); int Arg2 = 6; verify_case(2, Arg2, maxCards(Arg0, Arg1)); }
  61.     void test_case_3() { int Arr0[] = {19, 99, 86, 30, 98, 68, 73, 92, 37, 69, 93, 28, 58, 36, 86, 32, 46, 34, 71, 29}; vector <int> Arg0(Arr0, Arr0 + (sizeof(Arr0) / sizeof(Arr0[0]))); int Arr1[] = {28, 29, 22, 75, 78, 75, 39, 41, 5, 14, 100, 28, 51, 42, 9, 25, 12, 59, 98, 83}; vector <int> Arg1(Arr1, Arr1 + (sizeof(Arr1) / sizeof(Arr1[0]))); int Arg2 = 28; verify_case(3, Arg2, maxCards(Arg0, Arg1)); }
  62.  
  63. // END CUT HERE
  64.  
  65. };
  66. // BEGIN CUT HERE
  67. int main() {
  68.     YetAnotherCardGame ___test;
  69.     ___test.run_test(-1);
  70.     return 0;
  71. }
  72. // END CUT HERE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement