1 2 3 4

Perform Easily

最近状态是真的不对,十分难受。

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;
}

  

posted @ 2020-12-14 16:24  Lesning  阅读(92)  评论(0编辑  收藏  举报