1669E - 2-Letter Strings - CodeForces Solution


data structures math strings *1200

Please click on ads to support us..

Python Code:

from collections import defaultdict

t=int(input())
for _ in range(t):
    n=int(input())
    d=defaultdict(int)
    f=defaultdict(int)
    sec=defaultdict(int)
    s=set([])
    for i in range(n):
        x=input().strip()
        d[x]+=1
        f[x[0]]+=1 
        sec[x[1]]+=1 
        s.add(x)
    ans=0
    for i in 'abcdefghijk':
        ans+=f[i]*(f[i]-1)//2
        ans+=sec[i]*(sec[i]-1)//2
    for i in s:
        ans-=d[i]*(d[i]-1)
    print(ans)

C++ Code:

#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
#define ll long long
#define pb push_back
#define fr(a,b) for(int i = a; i < b; i++)
#define rep(i,a,b) for(int i = a; i < b; i++)
#define mod 1000000007
#define inf (1LL<<60)
#define all(x) (x).begin(), (x).end()
#define prDouble(x) cout << fixed << setprecision(10) << x
#define triplet pair<ll,pair<ll,ll>>
#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL)
using namespace std;
using namespace __gnu_pbds;
typedef tree<int,null_type,greater_equal<int>,rb_tree_tag,tree_order_statistics_node_update>ordered_set;//find by order // order of key
int main(){
    fast_io;
    int t;cin>>t;
    while(t--){
        ll n;cin>>n;
        vector<string> str(n);
        map<string,int>mp;
        map<char,int>st,end;
        for(int i=0;i<n;i++){
            cin>>str[i];
        }
        ll cnt =0;
        for(int i=0;i<n;i++){
            cnt+=st[str[i][0]]+end[str[i][1]]-2*mp[str[i]];
            mp[str[i]]++;
            st[str[i][0]]++;
            end[str[i][1]]++;
        }
        cout<<cnt<<endl;
    }
    return 0;
}


Comments

Submit
0 Comments
More Questions

946. Validate Stack Sequences
921. Minimum Add to Make Parentheses Valid
881. Boats to Save People
497. Random Point in Non-overlapping Rectangles
528. Random Pick with Weight
470. Implement Rand10() Using Rand7()
866. Prime Palindrome
1516A - Tit for Tat
622. Design Circular Queue
814. Binary Tree Pruning
791. Custom Sort String
787. Cheapest Flights Within K Stops
779. K-th Symbol in Grammar
701. Insert into a Binary Search Tree
429. N-ary Tree Level Order Traversal
739. Daily Temperatures
647. Palindromic Substrings
583. Delete Operation for Two Strings
518. Coin Change 2
516. Longest Palindromic Subsequence
468. Validate IP Address
450. Delete Node in a BST
445. Add Two Numbers II
442. Find All Duplicates in an Array
437. Path Sum III
436. Find Right Interval
435. Non-overlapping Intervals
406. Queue Reconstruction by Height
380. Insert Delete GetRandom O(1)
332. Reconstruct Itinerary