이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |