結果
問題 | No.507 ゲーム大会(チーム決め) |
ユーザー |
![]() |
提出日時 | 2017-04-21 22:27:58 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 13 ms / 3,000 ms |
コード長 | 2,032 bytes |
コンパイル時間 | 1,311 ms |
コンパイル使用メモリ | 160,200 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-20 05:24:12 |
合計ジャッジ時間 | 2,361 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 19 |
ソースコード
#include<bits/stdc++.h>using namespace std;void rd(int &x){int k, m=0;x=0;for(;;){k = getchar_unlocked();if(k=='-'){m=1;break;}if('0'<=k&&k<='9'){x=k-'0';break;}}for(;;){k = getchar_unlocked();if(k<'0'||k>'9'){break;}x=x*10+k-'0';}if(m){x=-x;}}void wt_L(int x){char f[10];int m=0, s=0;if(x<0){m=1;x=-x;}while(x){f[s++]=x%10;x/=10;}if(!s){f[s++]=0;}if(m){putchar_unlocked('-');}while(s--){putchar_unlocked(f[s]+'0');}}int A[100000], B[100000], M, N;int maxnum(int N, int A[], int K){int i, j, res=0;i = 0;j = N-1;while(i < j){if(A[i] + A[j] > K){res++;i++;j--;continue;}i++;}return res;}int main(){int i, j, k, x, y, z;rd(N);rd(M);{int Lj4PdHRW;for(Lj4PdHRW=0;Lj4PdHRW<N;Lj4PdHRW++){rd(A[Lj4PdHRW]);}}sort(A+1,A+N);x = 1;y = N;while(x < y){z = (x+y) / 2;k = 0;for(i=1;i<N;i++){if(i!=z){B[k++] = A[i];}}if(maxnum(k, B, A[0]+A[z]) >= M){x = z+1;}else{y = z;}}if(x==N){wt_L(-1);putchar_unlocked('\n');}else{wt_L(A[x]);putchar_unlocked('\n');}return 0;}// cLay varsion 20170421-1 [beta]// --- original code ---// int maxnum(int N, int A[], int K){// int i, j, res = 0;//// i = 0; j = N-1;// while(i < j){// if(A[i] + A[j] > K){// res++;// i++; j--;// continue;// }// i++;// }// return res;// }//// int N, M, A[100000];// int B[100000];// {// int i, j, k;// int x, y, z;//// reader(N,M,A(N));// sort(A+1,A+N);//// x = 1; y = N;// while(x < y){// z = (x+y) / 2;//// k = 0;// rep(i,1,N) if(i!=z) B[k++] = A[i];// if(maxnum(k, B, A[0]+A[z]) >= M) x = z+1; else y = z;// }// if(x==N) wt(-1); else wt(A[x]);// }