首页 > 学院 > 开发设计 > 正文

腾讯2017暑期实习生编程题-有趣的数字

2019-11-06 07:33:05
字体:
来源:转载
供稿:网友

传送门

code

#include<vector>#include<cstdio>#include<algorithm>#include<map>using namespace std;map<int, int> mp;struct node{ int fi, se; node(int f, int s){ fi = f; se = s; } bool Operator == (node rhs){ return fi == rhs.fi && se == rhs.se; }};bool exist(vector<node> t, node tmp){ for(int i = 0; i < t.size(); ++i) if(t[i] == tmp) return true; return false;}vector<int> store;vector<node> test;int a[100005], n;int main(){ while(~scanf("%d", &n)){ mp.clear(); store.clear(); test.clear(); for(int i = 1; i <= n; ++i) { scanf("%d", &a[i]); ++mp[a[i]]; } int maxAns, minAns = 0; sort(a + 1, a + n + 1); for(int i = 1; i <= n; ++i) { store.push_back(a[i]); } maxAns = mp[a[1]] * mp[a[n]]; int Min = 0x7f7f7f7f; for(int i = 1; i < store.size(); ++i){ if(store[i] - store[i - 1] < Min){ Min = store[i] - store[i - 1]; test.clear(); test.push_back(node(store[i], store[i - 1])); }else if(store[i] - store[i - 1] == Min && !exist(test, node(store[i], store[i - 1]))){ /** test.clear();*/ test.push_back(node(store[i], store[i - 1])); } } for(int i = 0; i < test.size(); ++i){ if(test[i].fi == test[i].se) minAns += (mp[test[i].fi] - 1) * mp[test[i].fi] / 2; else minAns += mp[test[i].fi] * mp[test[i].se]; } PRintf("%d %d/n", minAns, maxAns); } return 0;}添加笔记
上一篇:git常用命令

下一篇:抽象工厂

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表