結果
問題 | No.759 悪くない忘年会にしような! |
ユーザー |
![]() |
提出日時 | 2018-12-07 01:23:56 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 172 ms / 2,000 ms |
コード長 | 1,667 bytes |
コンパイル時間 | 1,171 ms |
コンパイル使用メモリ | 114,348 KB |
実行使用メモリ | 6,656 KB |
最終ジャッジ日時 | 2024-09-14 03:06:25 |
合計ジャッジ時間 | 4,751 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 64 |
ソースコード
#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<sstream>#include<cstdio>#include<cstdlib>#include<cstring>#include<climits>#include<cmath>#include<string>#include<vector>#include<set>#include<map>#include<queue>#include<numeric>#include<functional>#include<algorithm>#include<bitset>#include<tuple>#include<unordered_set>#include<unordered_map>#include<random>#include<array>#include<cassert>using namespace std;#define INF (1<<29)#define rep(i,n) for(int i=0;i<(int)(n);i++)#define all(v) v.begin(),v.end()#define uniq(v) v.erase(unique(all(v)),v.end())class BITmin {std::vector<int> bit;public:BITmin(int size) :bit(size + 1, INT_MAX) {}void add(int i, int x) {i++;while (i < (int)bit.size()) {bit[i] = std::min(bit[i], x);i += i & -i;}}int min(int a)const {//[1,a]a++;int res = INT_MAX;while (0 < a) {res = std::min(res, bit[a]);a -= a & -a;}return res;}};int main() {ios::sync_with_stdio(0);cin.tie(0);int n;cin >> n;map<int, vector<tuple<int, int, int>>> mp;rep(i,n) {int x, y, z;cin >> x >> y >> z;mp[10000 - x].emplace_back(10000 - y, 10000 - z, i + 1);}vector<int> ans;BITmin bit(10003);for (auto it = mp.begin(); it != mp.end(); ++it) {for (const auto &t : it->second) {bit.add(get<0>(t) + 1, get<1>(t));bit.add(get<0>(t), get<1>(t) + 1);}for (const auto &t : it->second) {if (bit.min(get<0>(t)) > get<1>(t)) {ans.push_back(get<2>(t));}}for (const auto &t : it->second) {bit.add(get<0>(t), get<1>(t));}}sort(all(ans));for (int i: ans) {cout << i << endl;}return 0;}