Codeforces ChainReaction Solution in Java

import java.io.*;
import java.util.*;
import java.math.*;
public class Chainreaction
{

public static void main(String[] args)
{
My sc=new My();
int n=sc.nextInt();
int i;
Elem arr[]=new Elem[n];
for(i=0;i<n;i++)
{

arr[i]=new Elem(sc.nextInt(),sc.nextInt());


}
Arrays.sort(arr);
int dp[]=new int[1000001];
int eleIdx=1;
int max=1;
dp[arr[0].pos]=1;
for(i=arr[0].pos+1;i<=1000000;i++)
{
if((int) eleIdx>=arr.length)
break;
else if( i<arr[eleIdx].pos)
{
dp[i]=dp[i-1];
continue;
}
else if((i-arr[eleIdx].pow-1)<0)
{
dp[i]=1;
}
else
{
dp[i]=dp[i-arr[eleIdx].pow-1]+1;
}
eleIdx++;
max=Math.max(max,dp[i]);
}
System.out.println(n-max);
}

}
class Elem implements Comparable<Elem>
{
int pos;
int pow;
Elem(int pos,int pow)
{
this.pos=pos;
this.pow=pow;
}
public int compareTo(Elem other)
{
if(this.pos<other.pos)
return -1;
else if(this.pos==other.pos)
return 0;
else
return 1;
}
}
class My
{
BufferedReader br;
StringTokenizer st;
My()
{
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