Submission #149551

#TimeUsernameProblemLanguageResultExecution timeMemory
149551(παρα)γεμιστά (#200)FunctionCup Museum (FXCUP4_museum)C++17
100 / 100
455 ms21220 KiB
#include "museum.h"
#include<map>
#include<vector>
#include<iostream>
#define ll long long
#define rep(i,a,b) for(int i = a;i < b;i++)
#define MAXN 300003

using namespace std;

ll ar[MAXN][3];
map < ll,ll > freq;

long long CountSimilarPairs(std::vector<int> B, std::vector<int> T, std::vector<int> G) {
	int n = B.size();

	ll ans = 0;

    rep(i,0,n)
    {
        ar[i][0] = B[i];
        ar[i][1] = T[i];
        ar[i][2] = G[i];
    }

    // 1 stixio kino

    rep(t,0,3)
    {
        freq.clear();
        rep(i,0,n)
        {
            freq[ar[i][t]]++;
        }

        for(map < ll,ll >::iterator it = freq.begin();it != freq.end();it++)
        {
            ll val = it->second;
            ans += (val*(val-1))/2;
        }
    }

   // cout << ans << endl;
    // 2 stixia kina

    freq.clear();

    rep(i,0,n)
    {
        freq[ar[i][0]*101 + ar[i][1]]++;
    }

    for(map < ll,ll >::iterator it = freq.begin();it != freq.end();it++)
    {
        ll val = it->second;
        ans -= (val*(val-1))/2;
    }

    freq.clear();
    rep(i,0,n)
    {
        freq[ar[i][0]*101 + ar[i][2]]++;
    }

    for(map < ll,ll >::iterator it = freq.begin();it != freq.end();it++)
    {
        ll val = it->second;
        ans -= (val*(val-1))/2;
    }

   // cout << ans << endl;

    freq.clear();

    rep(i,0,n)
    {
        freq[ar[i][1]*101 + ar[i][2]]++;
    }

    for(map < ll,ll >::iterator it = freq.begin();it != freq.end();it++)
    {
        ll val = it->second;
        ans -= (val*(val-1))/2;
    }

    // 3 stixia kina

    freq.clear();

    rep(i,0,n)
    {
        freq[ar[i][0]*12000+ar[i][1]*101+ar[i][2]]++;
    }

    for(map < ll,ll >::iterator it = freq.begin();it != freq.end();it++)
    {
        ll val = it->second;
        ans += (val*(val-1))/2;
    }

	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...