Submission #926246

#TimeUsernameProblemLanguageResultExecution timeMemory
926246samek08Cards (LMIO19_korteles)C++14
36 / 100
1032 ms70496 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; #define rep(a,b) for(int a = 0; a < (b); ++a) #define all(t) t.begin(), t.end() #define pb push_back struct Element { string n1, n2, n3, n4; bool operator < (const Element &element) const { //return n1 < element.n1 || n2 < element.n2 || n3 < element.n3 || n4 < element.n4; if(n1 == element.n1) { if(n2 == element.n2) { if(n3 == element.n3) { return n4 < element.n4; } return n3 < element.n3; } return n2 < element.n2; } return n1 < element.n1; } }; const int MAXN = 5e5+5; int n = 0; ll wyn = 0; char A[4][MAXN]; map<Element,int> S1; map<Element,int> S2; map<Element,int> S3; map<Element,int> S4; inline void dodaj1(Element el) { //cout << "n1: " << el.n1 << " n2: " << el.n2 << " n3: " << el.n3 << " n4: " << el.n4 << endl; if(auto it = S1.find(el) != S1.end()) { //cout << "JEST" << endl; ++S1[el]; } else { //cout << "NIE MA" << endl; S1[el] = 1; } } inline void dodaj2(Element el) { if(auto it = S2.find(el) != S2.end()) ++S2[el]; else S2[el] = 1; } inline void dodaj3(Element el) { if(auto it = S3.find(el) != S3.end()) ++S3[el]; else S3[el] = 1; } inline void dodaj4(Element el) { if(auto it = S4.find(el) != S4.end()) ++S4[el]; else S4[el] = 1; } inline int licz1(Element el) { //cout << "n1: " << el.n1 << " n2: " << el.n2 << " n3: " << el.n3 << " n4: " << el.n4 << endl; if(auto it = S1.find(el) != S1.end()) { //cout << "LICZ 1: " << S1[el] << endl; return S1[el]; } //cout << "LICZ 1: 0" << endl; return 0; } inline int licz2(Element el) { //cout << "n1: " << el.n1 << " n2: " << el.n2 << " n3: " << el.n3 << " n4: " << el.n4 << endl; if(auto it = S2.find(el) != S2.end()) { //cout << "LICZ 2: " << S2[el] << endl; return S2[el]; } return 0; } inline int licz3(Element el) { //cout << "n1: " << el.n1 << " n2: " << el.n2 << " n3: " << el.n3 << " n4: " << el.n4 << endl; if(auto it = S3.find(el) != S3.end()) { // cout << "LICZ 3: " << S3[el] << endl; return S3[el]; } return 0; } inline int licz4(Element el) { //cout << "n1: " << el.n1 << " n2: " << el.n2 << " n3: " << el.n3 << " n4: " << el.n4 << endl; if(auto it = S4.find(el) != S4.end()) { //cout << "LICZ 4: " << S4[el] << endl; return S4[el]; } return 0; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; rep(i,n) rep(j,4) cin >> A[j][i]; rep(i,n) { string z0, z1, z2, z3, dod = "z"; int res = 0; z0.pb(A[0][i]), z0.pb(A[2][i]); z1.pb(A[1][i]), z1.pb(A[3][i]); z2.pb(A[0][i]), z2.pb(A[1][i]); z3.pb(A[2][i]), z3.pb(A[3][i]); //cout << "DODDD: " << dod << " Z0: " << z0 << " Z1: " << z1 << " Z2: " << z2 << " Z3: " << z3 << endl; //cout << "LICZZZZ: " << endl; res += licz1({z0,dod,dod,dod}); res += licz1({dod,z1,dod,dod}); res += licz1({dod,dod,z2,dod}); res += licz1({dod,dod,dod,z3}); res -= licz2({z0,z1,dod,dod}); res -= licz2({z0,dod,z2,dod}); res -= licz2({z0,dod,dod,z3}); res -= licz2({dod,z1,z2,dod}); res -= licz2({dod,z1,dod,z3}); res -= licz2({dod,dod,z2,z3}); res += licz3({z0,z1,z2,dod}); res += licz3({z0,z1,dod,z3}); res += licz3({z0,dod,z2,z3}); res += licz3({dod,z1,z2,z3}); res -= licz4({z0,z1,z2,z3}); //cout << "I: " << i << " RES: " << res << endl; //cout << "MAPPP: " << endl; //for(auto it = S1.begin(); it != S1.end(); ++it) //cout << it->first.n1 << ' ' << it->first.n2 << ' ' << it->first.n3 << ' ' << it->first.n4 << ' ' << it->second << endl; //cout << endl << endl; wyn += res; //cout << "I: " << i << " RES: " << res << endl; //cout << endl << endl; z0.clear(), z1.clear(), z2.clear(), z3.clear(); z0.pb(A[1][i]), z0.pb(A[3][i]); z1.pb(A[0][i]), z1.pb(A[2][i]); z2.pb(A[2][i]), z2.pb(A[3][i]); z3.pb(A[0][i]), z3.pb(A[1][i]); //cout << "DOD: " << dod << " Z0: " << z0 << " Z1: " << z1 << " Z2: " << z2 << " Z3: " << z3 << endl; //cout << "DODDDDD: " << endl; dodaj1({z0,dod,dod,dod}); dodaj1({dod,z1,dod,dod}); dodaj1({dod,dod,z2,dod}); dodaj1({dod,dod,dod,z3}); dodaj2({z0,z1,dod,dod}); dodaj2({z0,dod,z2,dod}); dodaj2({z0,dod,dod,z3}); dodaj2({dod,z1,z2,dod}); dodaj2({dod,z1,dod,z3}); dodaj2({dod,dod,z2,z3}); dodaj3({z0,z1,z2,dod}); dodaj3({z0,z1,dod,z3}); dodaj3({z0,dod,z2,z3}); dodaj3({dod,z1,z2,z3}); dodaj4({z0,z1,z2,z3}); } cout << wyn << '\n'; return 0; }

Compilation message (stderr)

korteles.cpp: In function 'void dodaj1(Element)':
korteles.cpp:42:10: warning: unused variable 'it' [-Wunused-variable]
   42 |  if(auto it = S1.find(el) != S1.end())
      |          ^~
korteles.cpp: In function 'void dodaj2(Element)':
korteles.cpp:56:10: warning: unused variable 'it' [-Wunused-variable]
   56 |  if(auto it = S2.find(el) != S2.end()) ++S2[el];
      |          ^~
korteles.cpp: In function 'void dodaj3(Element)':
korteles.cpp:62:10: warning: unused variable 'it' [-Wunused-variable]
   62 |  if(auto it = S3.find(el) != S3.end()) ++S3[el];
      |          ^~
korteles.cpp: In function 'void dodaj4(Element)':
korteles.cpp:68:10: warning: unused variable 'it' [-Wunused-variable]
   68 |  if(auto it = S4.find(el) != S4.end()) ++S4[el];
      |          ^~
korteles.cpp: In function 'int licz1(Element)':
korteles.cpp:75:10: warning: unused variable 'it' [-Wunused-variable]
   75 |  if(auto it = S1.find(el) != S1.end())
      |          ^~
korteles.cpp: In function 'int licz2(Element)':
korteles.cpp:87:10: warning: unused variable 'it' [-Wunused-variable]
   87 |  if(auto it = S2.find(el) != S2.end())
      |          ^~
korteles.cpp: In function 'int licz3(Element)':
korteles.cpp:98:10: warning: unused variable 'it' [-Wunused-variable]
   98 |  if(auto it = S3.find(el) != S3.end())
      |          ^~
korteles.cpp: In function 'int licz4(Element)':
korteles.cpp:109:10: warning: unused variable 'it' [-Wunused-variable]
  109 |  if(auto it = S4.find(el) != S4.end())
      |          ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...