結果
| 問題 |
No.647 明太子
|
| コンテスト | |
| ユーザー |
forest3
|
| 提出日時 | 2020-04-06 17:11:35 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 19 ms / 4,500 ms |
| コード長 | 826 bytes |
| コンパイル時間 | 1,965 ms |
| コンパイル使用メモリ | 178,200 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-07-06 13:36:29 |
| 合計ジャッジ時間 | 2,705 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 20 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
int main()
{
int N;
cin >> N;
vector<int> A( N );
vector<int> B( N );
for( int i = 0; i < N; i++ ) {
cin >> A[i] >> B[i];
}
int M;
cin >> M;
vector<tuple<int, int, int>> XY( M );
for( int i = 0; i < M; i++ ) {
int X, Y;
cin >> X >> Y;
XY[i] = make_tuple( X, Y, i );
}
sort( XY.begin(), XY.end() );
vector<int> v( M );
for( int i = 0; i < N; i++ ) {
int j = upper_bound( XY.begin(), XY.end(), make_tuple( A[i], 100000000, M - 1 ) ) - XY.begin();
for( j--; j >= 0; j-- ) {
if( get<1>( XY[j] ) < B[i] ) continue;
int k = get<2>( XY[j] );
v[k]++;
}
}
int ma = *max_element( v.begin(), v.end() );
if( ma == 0 ) {
cout << 0 << endl;
}
else {
for( int i = 0; i < M; i++ ) {
if( v[i] < ma ) continue;
cout << i + 1 << endl;
}
}
}
forest3