Editorial for ACM


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.

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 happyboy99x

#include<algorithm>
#include<iostream>
#include<numeric>
#include<vector>
using namespace std;

int main() {
    int n; cin >> n;
    vector<int> v;
    int res = 0;
    for(int i = 0, a, b; i < 2 * n; ++i) {
        cin >> a >> b;
        res += a;
        v.push_back(b - a);
    }
    sort(v.begin(), v.end());
    cout << res + accumulate(v.begin(), v.begin() + n, 0) << '\n';
    return 0;
}

Code mẫu của ladpro98

program acmnb;
uses    math;
const   fi='';
        maxN=800004;
type    e=record
        x,y,s:longint;
        end;
var     a:array[1..maxN] of e;
        n:longint;

procedure input;
var     f:text;
        i:longint;
begin
        assign(f,fi);
        reset(f);
        readln(f,n);
        for i:=1 to n shl 1 do
        begin
                readln(f,a[i].x,a[i].y);
                a[i].s:=a[i].x-a[i].y;
        end;
        close(f);

end;

procedure swap(i,j:longint);
var     t:e;
begin
        t:=a[i];
        a[i]:=a[j];
        a[j]:=t;
end;

procedure sort(l,r:longint);
var     p,i,j:longint;
begin
        if l>=r then exit;
        p:=a[random(r-l+1)+l].s;
        i:=l;j:=r;
        repeat
                while a[i].s<p do inc(i);
                while a[j].s>p 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 cal;
var     i,res:longint;
begin
        res:=0;
        for i:=1 to n do
        inc(res,a[i].x);
        for i:=n+1 to n shl 1 do
        inc(res,a[i].y);
        write(res);
end;

begin
        input;
        sort(1,n shl 1);
        cal;
end.

Code mẫu của skyvn97

#include<algorithm>
#include<cstdio>
#define MAX   800800
#define FOR(i,a,b) for (int i=(a);i<=(b);i=i+1)
#define fi   first
#define se   second
using namespace std;
typedef pair<int,int> ii;
int n;
ii a[MAX];
bool cmp(const ii &a,const ii &b) {
    return (a.fi-a.se<b.fi-b.se);
}
void init(void) {
    scanf("%d",&n);
    FOR(i,1,2*n) {
        scanf("%d",&a[i].fi);
        scanf("%d",&a[i].se);
    }
    sort(a+1,a+2*n+1,cmp);
}
void process(void) {
    int res=0;
    FOR(i,1,n) res+=a[i].fi;
    FOR(i,n+1,2*n) res+=a[i].se;
    printf("%d",res);
}
int main(void) {
    //freopen("ACM.INP","r",stdin);
    //freopen("ACM.OUT","w",stdout);
    init();
    process();
    return 0;
}

Comments

Please read the guidelines before commenting.


There are no comments at the moment.