最近状态是真的不对,十分难受。
https://codeforces.com/contest/1435/problem/C
要疯狂刷cf练速度和思维 了
这题就是把他所有情况列出来,然后尺取就行了。。。。。。。。。。。。。。
我居然想了那么久。。。。。。。。。。。。。。。
#include<iostream>
#include<cstring>
#include<string>
#include<queue>
#include<vector>
#include<algorithm>
#include<set>
using namespace std;
typedef long long ll;
const ll INF = 1e16;
const int maxn = 2e5+11;
set<int>ss;
struct Node {
ll val;
int id;
Node(ll a,int b) : val(a),id(b) {}
};
vector<Node>ins;
queue<Node>que;
int n;
int a[20];
ll list[maxn];
bool bml(Node a,Node b) {
return a.val < b.val;
}
int vis[maxn];
int main() {
for(int i=0; i<6; i++) {
cin>>a[i];
ss.insert(a[i]);
}
int len = ss.size();
cin>>n;
for(int i=0; i<n; i++) {
cin>>list[i];
}
for(int i=0; i<n; i++) {
for(int j=0; j<6; j++) {
ll x = list[i] - a[j];
if(x < 0) x = INF;
ins.push_back(Node(x,i));
}
}
sort(ins.begin(),ins.end(),bml);
int cnt = 0;
ll ans = INF;
for(int i=0; i<ins.size(); i++) {
Node a = ins[i];
if(vis[a.id] == 0) cnt++;
vis[a.id] ++;
que.push(a);
if(cnt == n){
while(que.size()){
Node aa = que.front();
que.pop();
ans = min(ins[i].val - aa.val,ans);
vis[aa.id]--;
if(vis[aa.id] == 0){
cnt--;
break;
}
}
}
}
cout<<ans<<endl;
return 0;
}