From abe1c2ffb563700b9524f4f2f6ef173ed1a37dd9 Mon Sep 17 00:00:00 2001
From: Ankit Srivastava <42239246+ankitsri98@users.noreply.github.com>
Date: Tue, 22 Oct 2019 21:42:33 +0530
Subject: [PATCH 1/3] Create boredom

---
 src/boredom | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 67 insertions(+)
 create mode 100644 src/boredom

diff --git a/src/boredom b/src/boredom
new file mode 100644
index 0000000..eb36319
--- /dev/null
+++ b/src/boredom
@@ -0,0 +1,67 @@
+A. Boredom
+time limit per test1 second
+memory limit per test256 megabytes
+inputstandard input
+outputstandard output
+Alex doesn't like boredom. That's why whenever he gets bored, he comes up with games. One long winter evening he came up with a game and decided to play it.
+
+Given a sequence a consisting of n integers. The player can make several steps. In a single step he can choose an element of the sequence (let's denote it ak) and delete it, at that all elements equal to ak + 1 and ak - 1 also must be deleted from the sequence. That step brings ak points to the player.
+Alex is a perfectionist, so he decided to get as many points as possible. Help him.
+Input
+The first line contains integer n (1 ≤ n ≤ 105) that shows how many numbers are in Alex's sequence.
+
+The second line contains n integers a1, a2, ..., an (1 ≤ ai ≤ 105).
+
+Output
+Print a single integer — the maximum number of points that Alex can earn.
+
+Examples
+inputCopy
+2
+1 2
+outputCopy
+2
+inputCopy
+3
+1 2 3
+outputCopy
+4
+inputCopy
+9
+1 2 1 3 2 2 2 2 3
+outputCopy
+10
+Note
+Consider the third test example. At first step we need to choose any element equal to 2. After that step our sequence looks like this [2, 2, 2, 2]. Then we do 4 steps, on each step we choose any element equals to 2. In total we earn 10 points.
+
+SOLUTION :-
+
+#include<bits/stdc++.h>
+using namespace std;
+ 
+int main()
+{
+    int n,x;
+    cin>>n;
+    long long int a[100005]={0};
+    long long int dp[100005]={0};
+ 
+    for(int i=0;i<n;i++)
+    {
+    	cin>>x;
+        a[x]++;// cREATING A FREQUENCY ARRAY USING ITS INDEX AS NUMBERS
+    }
+    dp[0]=0; //if INPUT ARRAY ONLY HAS 0
+    dp[1]=a[1];//if input ARRAY ONLY HAS 0 AND 1'S
+    for(int i=2;i<=100000;i++)
+    {
+        dp[i]=max(dp[i-1],dp[i-2]+(i*a[i]));//IF NOT TAKING ELMENT  THEN TAKE THE PREVIOUS ONE 
+        //ELSE TAKE THE PREVIOUS TO PREVIOUS AND ADD THE FREQ OF PRESENT ELEMENT
+    }
+   /* for(int i=0;i<=1000;i++)
+    {
+        cout<<dp[i]<<" ";
+    }
+    cout<<endl;*/
+    cout<< dp[100000]<<endl;
+}

From 25663a12bd0927d3a4a70ec85d6fac316cb25455 Mon Sep 17 00:00:00 2001
From: Ankit Srivastava <42239246+ankitsri98@users.noreply.github.com>
Date: Wed, 30 Oct 2019 20:42:50 +0530
Subject: [PATCH 2/3] Create spoj dp problem

---
 src/spoj dp problem | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 src/spoj dp problem

diff --git a/src/spoj dp problem b/src/spoj dp problem
new file mode 100644
index 0000000..7085d28
--- /dev/null
+++ b/src/spoj dp problem	
@@ -0,0 +1 @@
+#famous easy dp problem 

From 5be7d9c03e914b4eb604843862c702b47365c1fc Mon Sep 17 00:00:00 2001
From: Ankit Srivastava <42239246+ankitsri98@users.noreply.github.com>
Date: Wed, 30 Oct 2019 20:43:40 +0530
Subject: [PATCH 3/3] Update spoj dp problem

---
 src/spoj dp problem | 67 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 67 insertions(+)

diff --git a/src/spoj dp problem b/src/spoj dp problem
index 7085d28..88d2ce3 100644
--- a/src/spoj dp problem	
+++ b/src/spoj dp problem	
@@ -1 +1,68 @@
 #famous easy dp problem 
+A. Boredom
+time limit per test1 second
+memory limit per test256 megabytes
+inputstandard input
+outputstandard output
+Alex doesn't like boredom. That's why whenever he gets bored, he comes up with games. One long winter evening he came up with a game and decided to play it.
+
+Given a sequence a consisting of n integers. The player can make several steps. In a single step he can choose an element of the sequence (let's denote it ak) and delete it, at that all elements equal to ak + 1 and ak - 1 also must be deleted from the sequence. That step brings ak points to the player.
+Alex is a perfectionist, so he decided to get as many points as possible. Help him.
+Input
+The first line contains integer n (1 ≤ n ≤ 105) that shows how many numbers are in Alex's sequence.
+
+The second line contains n integers a1, a2, ..., an (1 ≤ ai ≤ 105).
+
+Output
+Print a single integer — the maximum number of points that Alex can earn.
+
+Examples
+inputCopy
+2
+1 2
+outputCopy
+2
+inputCopy
+3
+1 2 3
+outputCopy
+4
+inputCopy
+9
+1 2 1 3 2 2 2 2 3
+outputCopy
+10
+Note
+Consider the third test example. At first step we need to choose any element equal to 2. After that step our sequence looks like this [2, 2, 2, 2]. Then we do 4 steps, on each step we choose any element equals to 2. In total we earn 10 points.
+
+SOLUTION :-
+
+#include<bits/stdc++.h>
+using namespace std;
+
+int main()
+{
+    int n,x;
+    cin>>n;
+    long long int a[100005]={0};
+    long long int dp[100005]={0};
+
+    for(int i=0;i<n;i++)
+    {
+    	cin>>x;
+        a[x]++;// cREATING A FREQUENCY ARRAY USING ITS INDEX AS NUMBERS
+    }
+    dp[0]=0; //if INPUT ARRAY ONLY HAS 0
+    dp[1]=a[1];//if input ARRAY ONLY HAS 0 AND 1'S
+    for(int i=2;i<=100000;i++)
+    {
+        dp[i]=max(dp[i-1],dp[i-2]+(i*a[i]));//IF NOT TAKING ELMENT  THEN TAKE THE PREVIOUS ONE
+        //ELSE TAKE THE PREVIOUS TO PREVIOUS AND ADD THE FREQ OF PRESENT ELEMENT
+    }
+   /* for(int i=0;i<=1000;i++)
+    {
+        cout<<dp[i]<<" ";
+    }
+    cout<<endl;*/
+    cout<< dp[100000]<<endl;
+}