910C - Minimum Sum - CodeForces Solution


constructive algorithms greedy math *1700

Please click on ads to support us..

C++ Code:

#include<bits/stdc++.h>
#include<vector>
#include<string>
#define ll long long
#define ull unsigned long long
using namespace std;
const int N=26;
const ll md=1e9+7;
ll n,cnt[26],nt[N],v[N];
string s;
ll pow(ll x,ll y){
	ll res=1;
	for(int i=1;i<=y;y++){
		res*=x;
	}
	cout<<res<<endl;
	return res;
}
struct aa{
	ll id,v;
	bool operator<(const aa &x){
		return v>x.v;
	}
};
void solve(){
	//fuck
	cin>>n;
	for(int i=0;i<26;i++){
		cnt[i]=0;
		nt[i]=0;
		v[i]=-1;
	}
	for(int i=1;i<=n;i++){
		cin>>s;
		int len=s.length();
		for(int j=0;j<len;j++){
			if(j==0)nt[s[j]-'a']=1;
			cnt[s[j]-'a']+=pow(10,len-j-1);
		}
	}
	vector<aa>zm;
	for(int i=0;i<26;i++){
		if(cnt[i]==0)continue;
		zm.push_back({i,cnt[i]});
	}
	sort(zm.begin(),zm.end());
	int now=2;
	for(int i=0;i<zm.size();i++){
		if(nt[zm[i].id]){
			v[zm[i].id]=1;
			break;
		}
	}
	for(int i=0;i<zm.size();i++){
		if(!nt[zm[i].id]){
			v[zm[i].id]=0;
			break;
		}
	}
	for(int i=0;i<zm.size();i++){
		if(v[zm[i].id]==-1){
			v[zm[i].id]=now;
			now++;
		}
	}
	ll ans=0;
	for(int i=0;i<zm.size();i++){
		ans+=v[zm[i].id]*zm[i].v;
	}
	cout<<ans<<endl;
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	int t=1;
//	cin>>t;
	while(t--){
		solve();
	}
	
}

  	 	 	 	 				    			 		 				


Comments

Submit
0 Comments
More Questions

973. K Closest Points to Origin
969. Pancake Sorting
967. Numbers With Same Consecutive Differences
957. Prison Cells After N Days
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