結果
問題 | No.938 賢人を探せ |
ユーザー | ppp |
提出日時 | 2019-12-02 00:47:48 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 5,246 bytes |
コンパイル時間 | 2,076 ms |
コンパイル使用メモリ | 120,156 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-11-22 00:34:23 |
合計ジャッジ時間 | 5,467 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | RE | - |
testcase_01 | AC | 2 ms
5,248 KB |
testcase_02 | AC | 2 ms
5,248 KB |
testcase_03 | AC | 2 ms
5,248 KB |
testcase_04 | AC | 2 ms
5,248 KB |
testcase_05 | AC | 2 ms
5,248 KB |
testcase_06 | AC | 2 ms
5,248 KB |
testcase_07 | AC | 2 ms
5,248 KB |
testcase_08 | RE | - |
testcase_09 | RE | - |
testcase_10 | AC | 2 ms
5,248 KB |
testcase_11 | RE | - |
testcase_12 | RE | - |
testcase_13 | RE | - |
testcase_14 | RE | - |
testcase_15 | RE | - |
testcase_16 | RE | - |
testcase_17 | RE | - |
testcase_18 | RE | - |
testcase_19 | RE | - |
testcase_20 | RE | - |
testcase_21 | RE | - |
testcase_22 | RE | - |
ソースコード
#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>#include <numeric>using namespace std;#define INT_MAX_VALUE 2147483647#define LONG_LONG_MAX_VALUE 9223372036854775807#define ll long long#define ld long doublestruct XX{int i;string b;};class xxGreater {public:bool operator()(const XX& riLeft, const XX& riRight) const {//第2条件if((riLeft.b) == (riRight.b)){return riLeft.i < riRight.i;//<:昇順(小さいものから順番)、>:降順(大きいものから順番)//プライオリティキューの場合は > で、top()すると値の小さいものがとれる}//第1条件return (riLeft.b) < (riRight.b);}};class xxGreateri {public:bool operator()(const XX& riLeft, const XX& riRight) const {//第1条件return (riLeft.i) < (riRight.i);}};//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 n;////int dat[2*10000000];////int dat2[2*10000000];//int dat[10];//int dat2[10];////void init(int n_){// n=1;// while(n<n_)n*=2;// for(int i=0;i<2*n-1;i++){// dat[i]=0;// dat2[i]=0;// }//}////void initset(int k,int a){// k+=n-1;// dat[k]=a;// while(k>0){// k=(k-1)/2;// dat[k]=dat[k*2+1]+dat[k*2+2];// }//}//////[a,b)の間を[l,r]区間で比較しアップデート////引数のindexに注意////nは固定。initで計算すみ////update2(L[i],R[i]+1,0,0,n,D[i]);//void update2(int a,int b,int k,int l,int r,int v){//v更新値、区間は0-index// if(r<=a || b<=l)return;// if(a<=l && r<=b){// dat[k]+=dat2[k];// if(r-l>1){// dat2[k*2+1]+=dat2[k]/2;// dat2[k*2+1]+=dat2[k]/2;// }// dat2[k]=v*(r-l);// return;// }else{// update2(a,b,k*2+1,l,(l+r)/2,v);// update2(a,b,k*2+2,(l+r)/2,r,v);// return;// }//}////int query(int a,int b,int k,int l,int r){// if(r<=a || b<=l)return 0;// if(a<=l && r<=b){// dat[k]+=dat2[k];// if(r-l>1){// dat2[k*2+1]+=dat2[k]/2;// dat2[k*2+1]+=dat2[k]/2;// }// dat2[k]=0;// return dat[k];// }// else{// int vl=query(a,b,k*2+1,l,(l+r)/2);// int vr=query(a,b,k*2+2,(l+r)/2,r);// return vl+vr;// }//}//void printb(unsigned int v) {// unsigned int mask = (int)1 << (sizeof(v) * CHAR_BIT - 1);// do putchar(mask & v ? '1' : '0');// while (mask >>= 1);//}typedef vector<ll> vec;typedef vector<vec> mat;mat mul(mat &A, mat &B, ll mod){mat C(A.size(),vec(B[0].size()));for(int i=0;i<A.size();i++){for(int j=0;j<B[0].size();j++){for(int k=0;k<B.size();k++){C[i][j]+=A[i][k]*B[k][j];C[i][j]%=mod;}}}return C;}//n: 冪指数mat pow(mat &A, ll n, ll mod){//xのn乗を計算するのにn乗を2進表記にして計算//x^22 = x^16 + x^4 + x^2mat B(A.size(),vec(A.size()));for(int i=0;i<A.size();i++){B[i][i]=1;}while(n>0){if(n&1){B=mul(B,A,mod);//答えに付加}A=mul(A,A,mod);//2乗n >>=1;}return B;}ll mod_pow(ll x, ll n, ll mod){//xのn乗を計算するのにn乗を2進表記にして計算//x^22 = x^16 + x^4 + x^2ll ret=1;while(n>0){if(n&1){ret=(ret*x)%mod;//答えに付加}x=(x*x)%mod;//2乗n >>=1;}return ret;}//XX a[200000];//XX b[200000];XX a[200];XX b[200];int main(int argc, const char * argv[]){//scanf("%s",S);//scanf("%d",&N);//scanf("%lld %lld",&target1,&target2);//sscanf(tmp.c_str(),"%dd%d%d",&time[i], &dice[i], &z[i]);//getline(cin, target);//ifstream ifs("a.txt");//テスト用//ifs >> a;//ここから//入力高速化ios::sync_with_stdio(false);cin.tie(0);ll n;cin>>n;for(int i=0;i<n;i++){cin >>a[i].b>>b[i].b;b[i].i=i;a[i].i=i;}sort(b,b+n,xxGreater());for(int i=1;i<n;i++){if(b[i].b==b[i-1].b){b[i].i=10000000;}}for(int i=0;i<n;i++){auto it=lower_bound(b,b+n,a[i],xxGreater());if((*it).b==a[i].b && (*it).i!=10000000){(*it).i=10000000;}else if((*--it).b==a[i].b){(*it).i=10000000;}}sort(b,b+n,xxGreateri());for(int i=0;i<n;i++){if(b[i].i!=10000000){cout << b[i].b << endl;}}//ここまで//cout << "ans" << endl;//printf("%.0f\n",ans);//小数点以下表示なし//printf("%.7f\n",p);return 0;}