結果
問題 | No.647 明太子 |
ユーザー |
![]() |
提出日時 | 2018-02-09 23:07:39 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 41 ms / 4,500 ms |
コード長 | 2,845 bytes |
コンパイル時間 | 929 ms |
コンパイル使用メモリ | 105,680 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-06-27 02:34:43 |
合計ジャッジ時間 | 1,878 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 20 |
ソースコード
#include <fstream>#include <iostream>#include <algorithm>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <string>#include <sstream>#include <map>#include <set>#include <vector>#include <stack>#include <cmath>#include <queue>#include <random>using namespace std;#define INT_MAX_VALUE 2147483647#define LONG_LONG_MAX_VALUE 9223372036854775807#define ll long longtemplate <class T>T mymax(T a,T b){if(a>=b) return a;return b;}template <class T>T mymin(T a,T b){if(a<=b) return a;return b;}ll gcd(ll a, ll b){if(a<b){swap(a,b);}while(b){ll r = a%b;a=b;b=r;}return a;}ll lcm(ll a, ll b){return (a*b)/gcd(a,b);}struct XX{int a;int b;int z;int i;};class xxGreater {public:bool operator()(const XX& riLeft, const XX& riRight) const {//第2条件if((riLeft.a) == (riRight.a)){return riLeft.i < riRight.i;//<:昇順(小さいものから順番)、>:降順(大きいものから順番)//プライオリティキューの場合は > で、top()すると値の小さいものがとれる}//第1条件return (riLeft.a) > (riRight.a);}};//map<long long,long long> prime_f(long long n){// map<long long,long long>res;// for(int i=2;i*i<=n;i++){// while(n%i==0){// ++res[i];// n/=i;// }// }// if(n!=1)res[n]=1;// return res;//}int main(int argc, const char * argv[]){//std::ios::sync_with_stdio(false);//scanf("%s",S);//scanf("%d",&N);//sscanf(tmp.c_str(),"%dd%d%d",&time[i], &dice[i], &z[i]);//getline(cin, target);//cin >> x >> y;//テスト用//ifstream ifs( "1_06.txt" );//ifs >> a;//ここから//入力高速化ios::sync_with_stdio(false);cin.tie(0);int N;cin >> N;int A[10000];int B[10000];for(int i=0;i<N;i++){cin >> A[i] >> B[i];}int M;cin >> M;int X[10000];int Y[10000];XX king[100000];for(int i=0;i<M;i++){cin >> X[i] >> Y[i];king[i].a=0;king[i].i=0;}for(int i=0;i<N;i++){for(int j=0;j<M;j++){if(A[i]>=X[j] && B[i]<=Y[j]){king[j].a++;king[j].i=j+1;}}}sort(king,king+M,xxGreater());int prev=king[0].a;if(prev==0){cout << 0 << endl;return 0;}for(int i=0;i<M;i++){if(prev!=king[i].a){break;}cout << king[i].i << endl;}//ここまで//cout << "ans" << endl;改行含む//printf("%.0f\n",ans);//小数点以下表示なし//printf("%.7f\n",p);return 0;}