Submission #1052784

#TimeUsernameProblemLanguageResultExecution timeMemory
1052784beaconmcNaval battle (CEOI24_battle)C++14
30 / 100
204 ms26028 KiB
#include <bits/stdc++.h>
 
typedef long long ll;
#define FOR(i,x,y) for(ll i=x; i<y; i++)
#define FORNEG(i,x,y) for(ll i=x; i>y; i--)

using namespace std;
vector<vector<ll>> easts, souths;

int main(){
	ll n; cin >> n;

	FOR(i,0,n){
		ll x,y;
		cin >> x >> y;
		char s;
		cin >> s;
		if (s=='S'){
			souths.push_back({x, (x+y), i+1});
		}else{
			easts.push_back({x, (x+y), i+1});
		}
	}
	sort(souths.begin(), souths.end());
	sort(easts.begin(), easts.end());
	reverse(easts.begin(), easts.end());


	set<vector<ll>> stuff;
	vector<ll> left;


	for (auto&i : easts){

		
		while (souths.size() && souths[souths.size()-1][0] > i[0]){
			stuff.insert({souths[souths.size()-1][1], souths[souths.size()-1][0], souths[souths.size()-1][2]});
			souths.pop_back();
		}

		// for (auto&i : stuff){
		// 	cout << i[0] << " " << i[1] << " " << i[2] << endl;
		// }
		// cout << i[1] << " " << i[2] << endl;
		// cout << "FUCK" << endl;
		if (stuff.upper_bound({i[1], -1,-1}) == stuff.end()){

			left.push_back(i[2]);
			continue;
		}

		vector<ll> temp = *stuff.upper_bound({i[1], -1,-1});


		if (temp[0] == i[1]){
			stuff.erase(temp);
		}else{
			left.push_back(i[2]);
		}
	}




	for (auto&i : stuff){
		left.push_back(i[2]);
	}
	for (auto&i : souths){
		left.push_back(i[2]);
	}
	for (auto&i: left){
		cout << i << "\n";
	}


}
















#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...