Codeforces Watchmen Solution

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.StringTokenizer;


public class Watchmen {

public static void main(String[] args)
{
MyScannerwtmen sc=new MyScannerwtmen();
int n=sc.nextInt();
Map<Long,Long> xf=new HashMap<Long,Long>();
Map<Long,Long> yf=new HashMap<Long,Long>();
Map<String,Long> xyf=new HashMap<String,Long>();
long count=0;
int i;
for(i=0;i<n;i++)
{
long x=sc.nextLong();
long y=sc.nextLong();
add(xyf,x+""+y);
add(xf,x);
add(yf,y);
}
for(Entry<Long,Long> entry: xf.entrySet())
{
count+=(entry.getValue()*(entry.getValue()-1))/2;
}
for(Entry<Long,Long> entry: yf.entrySet())
{
count+=(entry.getValue()*(entry.getValue()-1))/2;
}
for(Entry<String,Long> entry: xyf.entrySet())
{
count-=(entry.getValue()*(entry.getValue()-1))/2;
}


System.out.println(count);
}
static <K> void add(Map<K,Long> map,K key)
{
if(map.containsKey(key))
map.put(key,map.get(key)+1);
else
map.put(key, 1l);
}
}
class MyScannerwtmen
{
BufferedReader br;
StringTokenizer st;
MyScannerwtmen()
{
br=new BufferedReader(new InputStreamReader(System.in));
}
String next()
{

while(st==null || !st.hasMoreTokens())
{
try
{
st=new StringTokenizer(br.readLine());
}
catch(Exception e)
{
e.printStackTrace();
}
}
return st.nextToken();

}
int nextInt()
{
return Integer.parseInt(next());
}
long nextLong()
{
return Long.parseLong(next());
}
double nextDouble()
{
return Double.parseDouble(next());
}
String nextLine()
{
String str="";
try
{
str=br.readLine();
}
catch(Exception e)
{
e.printStackTrace();
}
return str;

}
}

Comments

Popular Posts