1154E - Two Teams - CodeForces Solution


data structures implementation sortings *1800

Please click on ads to support us..

C++ Code:

#include<bits/stdc++.h>
using namespace std;
int n,k;
vector<pair<int,int>>a;
int main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		int u;cin>>u;
		a.push_back({u,i});
	}
	sort(a.rbegin(),a.rend());
	set<int>s;
	for(int i=1;i<=n;i++)s.insert(i);
	queue<int>q;
	for(int i=0;i<n;i++){
		q.push(a[i].second);
	}
	int ans[n+1];
	int turn=0;
	while(s.size()){
		//cout<<1<<endl;
	vector<int>add;
	while(s.count(q.front())==0)q.pop();
	int pos=q.front();
	q.pop();
	auto it=s.find(pos);
	for(int i=0;i<=k;i++){
		add.push_back(*it);
		if(it==s.begin())break;
		it--;
	}
	it=s.find(pos);
	it++;
	for(int i=0;i<k;i++){
		if(it==s.end())break;
		else add.push_back(*it);
		it++;
	}
	for(auto x:add){
		ans[x]=turn+1;s.erase(x);
	}
	turn=turn^1;
	}
	for(int i=1;i<=n;i++)cout<<ans[i];
	return 0;
}


Comments

Submit
0 Comments
More Questions

1630C - Paint the Middle
1630D - Flipping Range
1328A - Divisibility Problem
339A - Helpful Maths
4A - Watermelon
476A - Dreamoon and Stairs
1409A - Yet Another Two Integers Problem
977A - Wrong Subtraction
263A - Beautiful Matrix
180C - Letter
151A - Soft Drinking
1352A - Sum of Round Numbers
281A - Word Capitalization
1646A - Square Counting
266A - Stones on the Table
61A - Ultra-Fast Mathematician
148A - Insomnia cure
1650A - Deletions of Two Adjacent Letters
1512A - Spy Detected
282A - Bit++
69A - Young Physicist
1651A - Playoff
734A - Anton and Danik
1300B - Assigning to Classes
1647A - Madoka and Math Dad
710A - King Moves
1131A - Sea Battle
118A - String Task
236A - Boy or Girl
271A - Beautiful Year