# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
103346 | tincamatei | Art Exhibition (JOI18_art) | C++14 | 6 ms | 384 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 500000;
struct Paint {
long long a, b;
}v[1+MAX_N];
bool cmp(Paint a, Paint b) {
return a.a < b.a;
}
int main() {
#ifdef HOME
FILE *fin = fopen("input.in", "r");
FILE *fout = fopen("output.out", "w");
#else
FILE *fin = stdin;
FILE *fout = stdout;
#endif
int n;
long long best, rez, sp;
fscanf(fin, "%d", &n);
for(int i = 0; i < n; ++i)
fscanf(fin, "%lld%lld", &v[i].a, &v[i].b);
sort(v, v + n, cmp);
sp = rez = 0LL;
best = v[0].a;
for(int i = 1; i < (1 << n); ++i) {
long long minA, maxA, sum;
minA = 1LL<<60;
maxA = -1;
sum = 0LL;
for(int j = 0; j < n; ++j)
if((1 << j) & i) {
sum += v[j].b;
minA = min(minA, v[j].a);
maxA = max(maxA, v[j].a);
}
rez = max(rez, sum - (maxA - minA));
}
/*for(int i = 0; i < n; ++i) {
sp = 0LL;
for(int j = i; j < n; ++j) {
sp += v[j].b;
rez = max(rez, sp - v[j].a + v[i].a);
//if(sp - v[j].a + v[i].a == rez)
//printf("%d %d->%lld\n", i, j, sp - v[j].a + v[i].a);
}
}*/
/*for(int i = 0; i < n; ++i) {
printf("%lld %lld\n", v[i].a, v[i].b);
sp = sp + v[i].b;
rez = max(rez, sp - v[i].a + best);
best = max(best, -sp + v[i].b + v[i].a);
printf("!%lld\n", sp);
} */
fprintf(fout, "%lld", rez);
fclose(fin);
fclose(fout);
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |