Editorial for Cách nhiệt
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
Lưu ý: Các code mẫu dưới đây chỉ mang tính tham khảo và có thể không AC được bài tập này
Code mẫu của flashmt
#include<iostream> int main() { int n,i,j,x,d[10010],a[100010]; long long re; re=0; scanf("%d",&n); for (i=1;i<=10010;i++) d[i]=0; for (i=1;i<=n;i++) { scanf("%d",&x); re+=x; d[x]++; } n=0; for (i=1;i<=10000;i++) if (d[i]>0) for (j=1;j<=d[i];j++) { n++; a[n]=i; } for (i=1;i<n-i+1;i++) re+=a[n-i+1]-a[i]; printf("%lld\n",re); return 0; }
Code mẫu của happyboy99x
#include <algorithm> #include <bitset> #include <cctype> #include <cfloat> #include <climits> #include <cmath> #include <complex> #include <cstdio> #include <cstdlib> #include <cstring> #include <ctime> #include <deque> #include <functional> #include <iostream> #include <list> #include <map> #include <numeric> #include <queue> #include <set> #include <stack> #include <string> #include <utility> #include <vector> using namespace std; typedef pair<int, int> ii; typedef vector<ii> vii; typedef vector<vii> vvii; typedef vector<int> vi; typedef vector<vi> vvi; #define sz(a) int((a).size()) #define fi first #define se second #define pb push_back #define mp make_pair #define all(c) (c).begin(), (c).end() #define tr(c,i) for(typeof((c).begin()) i = (c).begin(), _e = (c).end(); it != _e; ++it) #define present(c,x) ((c).find(x) != (c).end()) #define cpresent(c,x) (find(all(c),x) != (c).end()) #define rep(i,n) for(int i = 0, _n = (n); i < _n; ++i) #define repd(i,n) for(int i = (n)-1; i >= 0; --i ) #define fo(i,a,b) for(int i = (a), _b = (b); i <= _b; ++i) #define fod(i,a,b) for(int i = (a), _b = (b); i >= _b; --i) #define INF 1000000000 #define N 100005 int n, a[N]; int main() { scanf( "%d", &n ); rep(i,n) scanf( "%d", a+i ); sort(a, a+n); int res = 0; rep(i, n) res += a[i]; for( int i = 0, j = n - 1; i < j; ++i, --j ) res += a[j] - a[i]; printf( "%d\n", res ); return 0; }
Code mẫu của ladpro98
program insul; uses math; const fi=''; maxN=100001; var a:array[1..maxN] of longint; n,res:longint; procedure input; var inp:text; i:longint; begin assign(inp,fi); reset(inp); readln(inp,n); for i:=1 to n do readln(inp,a[i]); close(inp); end; procedure swap(i,j:longint); var t:longint; begin t:=a[i]; a[i]:=a[j]; a[j]:=t; end; procedure sort(l,r:longint); var i,j,pivot:longint; begin if l>=r then exit; pivot:=a[random(r-l+1)+l]; i:=l; j:=r; repeat while a[i]<pivot do inc(i); while a[j]>pivot do dec(j); if i<=j then begin if i<j then swap(i,j); inc(i); dec(j); end; until i>j; sort(l,j); sort(i,r); end; procedure process; var i:longint; begin res:=0; for i:=1 to n do inc(res,a[i]); for i:=1 to n div 2 do inc(res,a[n-i+1]-a[i]); end; begin input; sort(1,n); process; write(res); end.
Code mẫu của hieult
#include <stdio.h> //#include <conio.h> int partition(int array[], int top, int bottom); void QuickSort(int num[], int top, int bottom) { int middle; if (top < bottom) { middle = partition(num, top, bottom); QuickSort(num, top, middle); QuickSort(num, middle+1, bottom); } return; } int partition(int array[], int top, int bottom) { int x = array[top]; int i = top - 1; int j = bottom + 1; int temp; do { do { j --; }while (x >array[j]); do { i++; } while (x <array[i]); if (i < j) { temp = array[i]; array[i] = array[j]; array[j] = temp; } }while (i < j); return j; } int main() { int n,a[100001];long long KQ = 0; scanf("%d",&n); for(int i = 1;i<=n;i++) { scanf("%d",&a[i]); KQ = KQ + a[i]; } QuickSort(a,1,n); for(int i = 1;i<=n/2;i++) KQ = KQ + a[i]-a[n+1-i]; printf("%lld\n",KQ); //getch(); }
Code mẫu của ll931110
#include <algorithm> #include <iostream> using namespace std; int a[100010],n; int main() { // freopen("insul.in","r",stdin); // freopen("insul.ou","w",stdout); scanf("%d", &n); int sum = 0; for (int i = 0; i < n; i++) { scanf("%d", &a[i]); sum += a[i]; }; sort(a,a + n); for (int i = n - 1; i >= 0; i--) { int j = n - 1 - i; if (i <= j) break; sum += (a[i] - a[j]); }; printf("%d\n", sum); };
Comments