SHARE
TWEET

Untitled




Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
- # pragma GCC optimize("O3")
- #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
- #pragma GCC optimize("unroll-loops")
- # include <bits/stdc++.h>
- std::pair<int,int> DR[] = {{-1,0},{0,1},{1,0},{0,-1},{-1,1},{-1,-1},{1,1},{1,-1}};
- # define ll long long
- # define clock (clock() * 1000.0 / CLOCKS_PER_SEC)
- # define rc(s) return cout << s,0
- # define rcg(s) cout << s;exit(0)
- # define _ ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0);
- # define db(x) cerr << #x << " = " << x << '\n'
- # define pb push_back
- # define mp make_pair
- # define all(s) s.begin(),s.end()
- # define sz(x) (int)((x).size())
- //# define int ll
- using namespace std;
- int n,x;
- vector<int>vec[50005];
- ll m[6];
- inline int readChar();
- template <class T = int> inline T readInt();
- template <class T> inline void writeInt( T x, char end = 0 );
- inline void writeChar( int x );
- inline void writeWord( const char *s );
- /** Read */
- static const int buf_size = 4096;
- inline int getChar() {
- static char buf[buf_size];
- static int len = 0, pos = 0;
- if (pos == len) {
- pos = 0, len = fread(buf, 1, buf_size, stdin);
- }
- if (pos == len) {
- return -1;
- }
- return buf[pos++];
- }
- inline int readChar() {
- int c = getChar();
- while (c <= 32) {
- c = getChar();
- }
- return c;
- }
- template <class T>
- inline T readInt() {
- int s = 1, c = readChar();
- T x = 0;
- if (c == '-')
- s = -1, c = getChar();
- while ('0' <= c && c <= '9')
- x = x * 10 + c - '0', c = getChar();
- return s == 1 ? x : -x;
- }
- /** Write */
- static int write_pos = 0;
- static char write_buf[buf_size];
- inline void writeChar( int x ) {
- if (write_pos == buf_size)
- fwrite(write_buf, 1, buf_size, stdout), write_pos = 0;
- write_buf[write_pos++] = x;
- }
- template <class T>
- inline void writeInt( T x, char end ) {
- if (x < 0)
- writeChar('-'), x = -x;
- char s[24];
- int n = 0;
- while (x || !n)
- s[n++] = '0' + x % 10, x /= 10;
- while (n--)
- writeChar(s[n]);
- if (end)
- writeChar(end);
- }
- inline bool eq(vector<int>a,vector<int>b)
- {
- if(sz(a) != sz(b)) return 0;
- for(int i = sz(a) - 1;i + 1;i--) if(a[i] != b[i]) return 0;
- return 1;
- }
- vector<vector<int>>shaq;
- inline bool cmp(const vector<int>&a,const vector<int>&b)
- {
- if(sz(a) != sz(b)) return sz(a) < sz(b);
- for(int i = 0;i < sz(a);i++)
- {
- if(a[i] != b[i]) return a[i] < b[i];
- }
- return 0;
- }
- int32_t main(){_
- freopen("cowpatibility.in","r",stdin);
- freopen("cowpatibility.out","w",stdout);
- n = readInt();
- for(int i = 1;i <= n;i++)
- {
- for(int k = 1;k <= 5;k++)
- {
- x = readInt();
- vec[i].pb(x);
- }
- sort(vec[i].begin(),vec[i].end());
- }
- for(int mask = 1;mask < (1 << 5);mask++)
- {
- for(int i = 1;i <= n;i++){
- vector<int>aux;
- for(int j = 0;j < 5;j++)
- {
- if(mask & (1 << j))
- {
- aux.pb(vec[i][j]);
- }
- }
- shaq.pb(aux);
- }
- }
- sort(shaq.begin(),shaq.end(),&cmp);
- int i = 0;
- while(i < sz(shaq))
- {
- int j = i;
- while(j < sz(shaq) && eq(shaq[j],shaq[i])) j++;
- m[sz(shaq[i])] += (1LL*(j - i) * (j - i - 1)) / 2LL;
- i = j;
- }
- ll ans = 0;
- for(int i = 1;i <= 5;i++) if(i % 2 == 1) ans += m[i]; else ans -= m[i];
- rc((1LL*n*(n-1))/2LL - ans);
- }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy.