1176F - Destroy it - CodeForces Solution


dp implementation sortings *2100

Please click on ads to support us..

C++ Code:

//jiudge: 31426: 1699964282
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define int ll
typedef pair<int,int> pii;
const int N=2e5+7;
int n,k,c,d;
vector<int>v[5];
int dp[N][20];
void solve(){
	cin>>n;
	memset(dp,-1,sizeof dp);
	dp[0][0]=0;
	for(int i=1;i<=n;i++){
		cin>>k;
		for(int j=1;j<=3;j++)v[j].clear();
		for(int j=1;j<=k;j++){
			cin>>c>>d;
			v[c].push_back(d);
		}
		for(int j=1;j<=3;j++)sort(v[j].begin(),v[j].end(),greater<int>());
		for(int j=0;j<=9;j++){
			dp[i][j]=max(dp[i][j],dp[i-1][j]);
			if(dp[i-1][j]==-1)continue;
			
			int nx=(j+1)%10;
			int ma=-1,ma2=-1;
			for(int k=1;k<=3;k++)if(!v[k].empty())ma=max(ma,v[k][0]);
			ma2=2*ma;
			if(ma==-1)continue;
			if(j<9)dp[i][nx]=max(dp[i][nx],dp[i-1][j]+ma);
			else dp[i][nx]=max(dp[i][nx],dp[i-1][j]+ma2);
			
			nx=(j+2)%10;
			ma=ma2=-1;
			if(v[1].size()<1)continue;
			if(v[2].size()>=1)ma=max(ma,v[1][0]+v[2][0]),ma2=max(ma2,(v[1][0]+v[2][0])+max(v[1][0],v[2][0]));
			if(v[1].size()>=2)ma=max(ma,v[1][0]+v[1][1]),ma2=max(ma2,2*v[1][0]+v[1][1]);
			if(ma==-1)continue;
			if(j<8)dp[i][nx]=max(dp[i][nx],dp[i-1][j]+ma);
			else dp[i][nx]=max(dp[i][nx],dp[i-1][j]+ma2);
			
			
			nx=(j+3)%10;
			if(v[1].size()<3)continue;
			ma=v[1][0]+v[1][1]+v[1][2],ma2=ma+v[1][0];
			if(ma==-1)continue;
			if(j<7)dp[i][nx]=max(dp[i][nx],dp[i-1][j]+ma);
			else dp[i][nx]=max(dp[i][nx],dp[i-1][j]+ma2);
			
		}
	}
	int ans=-1;
	for(int i=0;i<=9;i++)ans=max(ans,dp[n][i]);
	cout<<ans<<'\n';
}
signed main(){
	int t=1;
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
//	cin>>t;
	while(t--)solve();
	return 0;
}


Comments

Submit
0 Comments
More Questions

762C - Two strings
802M - April Fools' Problem (easy)
577B - Modulo Sum
1555B - Two Tables
1686A - Everything Everywhere All But One
1469B - Red and Blue
1257B - Magic Stick
18C - Stripe
1203B - Equal Rectangles
1536A - Omkar and Bad Story
1509A - Average Height
1506C - Double-ended Strings
340A - The Wall
377A - Maze
500A - New Year Transportation
908D - New Year and Arbitrary Arrangement
199A - Hexadecimal's theorem
519C - A and B and Team Training
631A - Interview
961B - Lecture Sleep
522A - Reposts
1166D - Cute Sequences
1176A - Divide it
1527A - And Then There Were K
1618E - Singers' Tour
1560B - Who's Opposite
182B - Vasya's Calendar
934A - A Compatible Pair
1618F - Reverse
1684C - Column Swapping