NC236594. 差分构造
描述
输入描述
第一行一个正整数 代表可重集中元素的个数。第二行 个用空格分割的整数描述了集合中的元素。保证:集合中元素的绝对值不超过
输出描述
输出一行共两个整数代表答案。
示例1
输入:
13 0 -9 6 9 6 6 9 11 11 34 76 9 11
输出:
85 7
C++(g++ 7.5.0) 解法, 执行用时: 58ms, 内存消耗: 1192K, 提交时间: 2022-09-25 21:46:28
#include<bits/stdc++.h> using namespace std; int main(){ int n;cin>>n; vector<int>a(n); for(int&v:a)cin>>v; if(n==1)cout<<"0 1",exit(0); sort(a.begin(),a.end()); if(n==2)cout<<a[1]-a[0]<<" 2",exit(0); vector<int>b(a);b.erase(unique(b.begin(),b.end()),b.end()); cout<<a[n-1]-a[0]<<' '<<b.size()+(a[0]==a[1])+(a[n-2]==a[n-1]); }
C++(clang++ 11.0.1) 解法, 执行用时: 29ms, 内存消耗: 820K, 提交时间: 2023-07-21 22:44:31
#include<bits/stdc++.h> using namespace std; int n,a[100010],l,f; int main() { scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d",&a[i]); sort(a+1,a+n+1); if(n>=2 && a[1]==a[2])f++; if(n>2 && a[n]==a[n-1])f++; l=unique(a+1,a+n+1)-a-1; printf("%d %d\n",a[l]-a[1],l+f); return 0; }
Python3 解法, 执行用时: 152ms, 内存消耗: 26916K, 提交时间: 2022-10-03 17:21:06
input() a={} for x in map(int,input().split()): if a.get(x): a[x]+=1 else: a[x]=1 l=sorted(list(a.keys())) if l[0]==l[-1]: print(0, 3 if a[l[0]]>2 else a[l[0]]) else: print(l[-1]-l[0],len(l)+int(a[l[0]]>1)+int(a[l[-1]]>1))