#include<iostream> #include<algorithm> usingnamespace std; int nums[100010]; intmain() { int n; cin>>n; for (int i = 0; i < n; i++) { cin>>nums[i]; }
sort(nums, nums + n); int left = 0, right = 0; for (int i = 0; i < n / 2; i++) { left += nums[i]; } for (int i = n / 2 + n % 2; i < n; i++) { right += nums[i]; } cout<<right - left<<endl; }
#include<iostream> #include<algorithm> #include<cmath> usingnamespace std; typedef pair<double, double> PII; #define r first #define l second PII seg[100010]; constdouble INF = 1e10, eps = 1e-6; intmain() { int n, d; cin >> n >> d;
for (int i = 0; i < n; i++) { int x, y; cin>>x>>y; if (y > d) { cout << -1 << endl; return0; } auto len = sqrt(d * d - y * y); seg[i] = {x + len, x - len}; }
sort(seg, seg + n); int res = 0; double last = -INF; for (int i = 0; i < n; i++) { if (seg[i].l > last + eps) { res++; last = seg[i].r; } }
typedeflonglong LL ; constint N = 100010 , mod = 1000000009 ; int a[N];
intmain() { int n , k ; scanf("%d%d",&n,&k); for(int i = 0 ; i < n ; i ++) scanf("%d",&a[i]);
sort(a,a + n);
LL res = 1 ; //乘积初始化 int l = 0 , r = n - 1 ;//双指针初始化 int sign = 1 ; // 符号初始化
//由于4种情况除了 k 是奇数且 k < n 的时候需要特判一下处理一下符号 ,其他的时候都可以转化为双指针做法 //k 是奇数是先选出最大的数, k-- 就是偶数,两边再同时取对,转化成相同的双指针做法 if(k % 2 ) { res = a[r]; // 取出最大的一个数 r -- ; //右指针移动 k -- ; //个数减1
if(res < 0) sign = -1; // 如果最大值都是负数,就证明全是负数,那么符号要发生改变 } while(k) // 双指针做法 { LL x = (LL)a[l] * a[l + 1] , y = (LL)a[r] * a[r - 1];//两边同时取对 //选择更大的一对,和归并排序思路相近 if(x * sign > y * sign) { res = x % mod * res % mod; // 需要注意的是 :不可以写成(x * res) % mod ,也不可以写成是 res % mod * x % mod // 因为x最大是 10^10,如果不先取模的话,和res相乘的结果最大是 10^19,会暴long long。 l += 2; // 指针移动 } else { res = y % mod * res % mod; r -= 2; } k -= 2; } printf("%lld",res); return0; }
#include<iostream> #include<algorithm> usingnamespace std; int nums[300010]; intmain() { int n, m; cin>>n >> m; for (int i = 0; i < n + m + 1; i++) { cin>>nums[i]; }
sort(nums, nums + n + m + 1);
longlong res = nums[n + m]; if (m == 0) { for(int i = 0; i < n + m; i++) { res += nums[i]; } } else { res -= nums[0]; for (int i = 1; i < n + m; i++) { res += abs(nums[i]); } }