23
December
[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
#include<functional>
#include<climits>
#include<string>
using namespace std;
class MiddleCode{
public:
string encode(string s){
string t;
while(!s.empty()){
if(s.size()%2 == 0){
//even number
if(s[s.size()/2-1]<s[s.size()/2]){
t.push_back(s[s.size()/2-1]);
s.erase(s.size()/2-1,1);
}else{
t.push_back(s[s.size()/2]);
s.erase(s.size()/2,1);
}
}
else{
//odd number
t.push_back(s[s.size()/2]);
s.erase(s.size()/2,1);
}
}
return t;
}
};
#include<iostream>
#include<vector>
#include<functional>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cstdlib>
using namespace std;
int binary_s(vector<int> v,int target);
int main(void){
int N,D;
vector<int> item; //商品の値段
vector<int> goal; //キャンペーン設定金額
scanf("%d%d\n",&N,&D);
for(int i=0;i<N;i++){
int a;
scanf("%d\n",&a);
item.push_back(a);
}
for(int i=0;i<D;i++){
int a;
scanf("%d\n",&a);
goal.push_back(a);
}
//ここまで読み込み
sort(item.begin(),item.end());//商品の値段順ソート
for(int i=0;i<D;i++){ //キャンペーン設定金額ループ
int ans = 0;
if(item[0]+item[1]>goal[i])cout << 0 << endl; //最低の商品2つの合計の値段が設定金額を超えていたら0
else{
//item[]:商品金額 goal[i]:キャンペーン設定金額 ans:最小値格納用
for(int j=0;j<N;j++){
if(item[j]>=goal[i])continue;
int a = binary_s(item,goal[i]-item[j]);
if(item[a] + item[j] == goal[i] && a!=j){
ans=item[a] + item[j];
break;
}
if(a==j)a-=1;
if(item[a] + item[j]>goal[i])continue;
ans = std::max(ans,item[j] + item[a]);
}
cout << ans << endl;
}
}
return 0;
}
int binary_s(vector<int> v,int target){
int Mid=v.size()/2,Max=v.size()-1,Min=0;
int PreMid = 0;
while(Mid!=PreMid){
PreMid = Mid;
if(v[Mid] == target)return Mid;
else if(v[Mid]>target){
Max=Mid;
Mid=(Max+Min)/2;
}else{
Min=Mid;
Mid=(Max+Min)/2;
}
}
if(target<v[Mid])return Mid-1;
else return Mid;
}
#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
#include<string>
using namespace std;
class TypoCoderDiv2{
public:
int count(vector rating){
bool c=true;
int cnt=0;
for(int i=0;i<rating.size();i++){
if(i==0){
if(rating[i] >= 1200){c=true;cnt++;}
else c=false;
}
else{
if(c){
if(rating[i]<1200){c=false;cnt++;}
}
else if(c==false){
if(rating[i]>=1200){c=true;cnt++;}
}
}
}
return cnt;
}
};
#include<iostream>
#include<vector>
#include<map>
#include<string>
#include<climits>
#include<algorithm>
using namespace std;
class WinterAndMandarins{
public:
int getNumber(vector <int> bags, int K){
sort(bags.begin(),bags.end());
int ret=INT_MAX;
for(int i=0;i<=bags.size()-K;i++){
ret = std::min(ret,bags[i+K-1]-bags[i]);
}
return ret;
}
};