結果
問題 |
No.1110 好きな歌
|
ユーザー |
![]() |
提出日時 | 2020-07-11 14:06:49 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 306 ms / 5,000 ms |
コード長 | 1,271 bytes |
コンパイル時間 | 986 ms |
コンパイル使用メモリ | 103,964 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-10-13 01:08:28 |
合計ジャッジ時間 | 9,932 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 51 |
ソースコード
#pragma GCC optimize("Ofast") #include<iostream> #include<stdio.h> #include<algorithm> #include<vector> #include<string.h> #include<math.h> #include<map> #include<iomanip> #include<queue> const long long INFL = 1e17+7; const long long INFI = 1e9+7; const long long MOD = 1e9+7; const double EXP = 1e-8; const double PI=acos(-1); using namespace std; int main(){ cin.tie(0); ios::sync_with_stdio(false); int n,d; cin >> n >> d; vector<int> a(n+1); vector<int> b(n+1); a[0]=b[0]=0; for(int i=1;i<=n;i++){ cin >> a[i]; b[i]=a[i]; } sort(b.begin(),b.end()); int start=0; int end=b.size()-1; int target; int id=0; int mid; vector<int> ans; while(1){ int target=a[id]-d; //cout << "target : " << target << endl; if(ans.size()==b.size())break; mid=(end+start)/2; //cout << "mid : " << mid << endl; if(b[mid]>target){ end=mid; //cout << "start : " << start << " end : " << end << endl; }else if(b[mid]<=target){ start=mid; //cout << "start : " << start << " end : " << end << endl; } if(end-start<=1){ ans.push_back(start); //cout << ans[id] << endl; id++; start=0; end=b.size()-1; } } for(int i=1;i<ans.size();i++){ cout << ans[i] << endl; } return 0; } /* 5 2 1 2 3 3 4 */