Advertisement
Asif_Anwar

USACO 2018 US Open Contest, Bronze Problem 1. Team Tic Tac Toe

Apr 9th, 2021
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.24 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. #define pb push_back
  5. #define FastIO ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
  6. #define F first
  7. #define S second
  8. typedef long long ll;
  9. typedef vector< int > vi;
  10. typedef vector< ll > V;
  11. typedef map<int, int > mp;
  12. #define debug cout << -1 << endl;
  13. #define REP(i, a, b) for(int i=a; i<b; i++)
  14. #define pop pop_back
  15. #define sz(a) (int)a.size()
  16. const ll MOD = 1000000007;
  17. const int maxN = 2001;
  18.  
  19. int dx[] = {-1, 0, 1, -1, 1, -1, 0, 1};
  20. int dy[] = {-1, -1, -1, 0, 0, 1, 1, 1};
  21.  
  22. void solve()
  23. {
  24.     char arr[3][3];
  25.     for(int i=0; i<3; i++ ){
  26.         for(int j=0; j<3; j++) {
  27.             cin >> arr[i][j];
  28.         }
  29.     }
  30.     int cnt1 = 0, cnt2 = 0;
  31.     map< char, int > m1;
  32.     map< pair< char, char >, int > m2;
  33.     REP(i, 0, 3) {
  34.         set< char > s;
  35.         REP(j, 0, 3) {
  36.             s.insert(arr[i][j]);
  37.         }
  38.         if(sz(s)==1) {
  39.             auto it = s.begin();
  40.             if(m1[*it]==0) cnt1++;
  41.             m1[*it]++;
  42.         }
  43.         else if(sz(s)==2) {
  44.             auto it = s.begin();
  45.             pair< char, char > p;
  46.             p.F = *it;
  47.             it++;
  48.             p.S = *it;
  49.             if(m2[p]==0) cnt2++;
  50.             m2[p]++;
  51.         }
  52.     }
  53.     REP(j, 0, 3) {
  54.         set< char > s;
  55.         REP(i, 0, 3) {
  56.             s.insert(arr[i][j]);
  57.         }
  58.         if(sz(s)==1) {
  59.             auto it = s.begin();
  60.             if(m1[*it]==0) cnt1++;
  61.             m1[*it]++;
  62.         }
  63.         else if(sz(s)==2) {
  64.             auto it = s.begin();
  65.             pair< char, char > p;
  66.             p.F = *it;
  67.             it++;
  68.             p.S = *it;
  69.             if(m2[p]==0) cnt2++;
  70.             m2[p]++;
  71.         }
  72.     }
  73.     set< char > s;
  74.     s.insert(arr[0][0]);
  75.     s.insert(arr[1][1]);
  76.     s.insert(arr[2][2]);
  77.     if(sz(s)==1) {
  78.         auto it = s.begin();
  79.         if(m1[*it]==0) cnt1++;
  80.         m1[*it]++;
  81.     }
  82.     else if(sz(s)==2) {
  83.         auto it = s.begin();
  84.         pair< char, char > p;
  85.         p.F = *it;
  86.         it++;
  87.         p.S = *it;
  88.         if(m2[p]==0) cnt2++;
  89.         m2[p]++;
  90.     }
  91.     s.clear();
  92.     s.insert(arr[0][2]);
  93.     s.insert(arr[1][1]);
  94.     s.insert(arr[2][0]);
  95.     if(sz(s)==1) {
  96.         auto it = s.begin();
  97.         if(m1[*it]==0) cnt1++;
  98.         m1[*it]++;
  99.     }
  100.     else if(sz(s)==2) {
  101.         auto it = s.begin();
  102.         pair< char, char > p;
  103.         p.F = *it;
  104.         it++;
  105.         p.S = *it;
  106.         if(m2[p]==0) cnt2++;
  107.         m2[p]++;
  108.     }
  109.     cout << cnt1 << "\n" << cnt2 << endl;
  110.     return;
  111. }
  112.  
  113. int main()
  114. {
  115.     FastIO;
  116.     freopen("tttt.in","r",stdin);
  117.     freopen("tttt.out","w",stdout);
  118.     int t;
  119.     t = 1;
  120.     //cin >> t;
  121.     while(t--){
  122.         solve();
  123.     }
  124.     return 0;
  125. }
  126.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement