# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
972953 | 2024-05-01T10:41:52 Z | sleepntsheep | Palembang Bridges (APIO15_bridge) | C | 42 ms | 2136 KB |
#include <stdio.h> #include <stdlib.h> #define MAX_N 100000 int min(int a,int b){return a<b?a:b;} int max(int a,int b){return a>b?a:b;} int cmpr(const void*a,const void*b){return *(const int*)a - *(const int*)b;} int n, k, c[1+MAX_N<<1], p; long long cost, pc[1+MAX_N<<1], z = 1e18; int main() { scanf("%d%d", &k, &n); for (int s, t, i = 0; i < n; ++i) { char bb, cc; scanf(" %c%d %c%d",&bb,&s,&cc,&t); if(bb==cc) cost += abs(t-s); else { c[++p] = s; c[++p] = t; ++cost; } } qsort(c+1, p, sizeof*c, cmpr); if(k==1) { for(int j=1;j<=p;++j) cost += abs(c[p/2] - c[j]); printf("%lld\n", cost); return 0; } /* partial sum on c */ for (int i = 1; i <= p; ++i) pc[i] = pc[i-1] + c[i]; /* some prefix of points will choose left bridge and the rest will choose right bridge * * - fix prefix and find optimal cost for that prefix */ for (int i = 1; i <= p; ++i) { /* c[1..i] will use left bridge, the rest using right bridge */ long long cost1 = 0; /* left bridge*/ cost1 += (i/2ll)*c[i/2] - pc[i/2]; cost1 += (pc[i] - pc[i/2]) - c[i/2]*1ll*(i-i/2); /* right bridge*/ int j = (p-i)/2+i; cost1 += c[j]*1ll*(j-i) - (pc[j] - pc[i]); cost1 += (pc[p] - pc[j]) - c[j]*1ll*(p-j); if(cost1<z)z=cost1; } printf("%lld",z+cost); }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 344 KB | Output is correct |
2 | Correct | 0 ms | 348 KB | Output is correct |
3 | Correct | 0 ms | 348 KB | Output is correct |
4 | Correct | 1 ms | 348 KB | Output is correct |
5 | Correct | 0 ms | 348 KB | Output is correct |
6 | Correct | 1 ms | 348 KB | Output is correct |
7 | Correct | 0 ms | 348 KB | Output is correct |
8 | Correct | 0 ms | 348 KB | Output is correct |
9 | Correct | 1 ms | 348 KB | Output is correct |
10 | Correct | 0 ms | 348 KB | Output is correct |
11 | Correct | 0 ms | 348 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 348 KB | Output is correct |
2 | Correct | 0 ms | 348 KB | Output is correct |
3 | Correct | 0 ms | 348 KB | Output is correct |
4 | Correct | 1 ms | 348 KB | Output is correct |
5 | Correct | 1 ms | 348 KB | Output is correct |
6 | Correct | 1 ms | 540 KB | Output is correct |
7 | Correct | 1 ms | 348 KB | Output is correct |
8 | Correct | 0 ms | 348 KB | Output is correct |
9 | Correct | 1 ms | 348 KB | Output is correct |
10 | Correct | 0 ms | 436 KB | Output is correct |
11 | Correct | 1 ms | 348 KB | Output is correct |
12 | Correct | 24 ms | 1616 KB | Output is correct |
13 | Correct | 42 ms | 1932 KB | Output is correct |
14 | Correct | 32 ms | 1616 KB | Output is correct |
15 | Correct | 25 ms | 1116 KB | Output is correct |
16 | Correct | 27 ms | 1628 KB | Output is correct |
17 | Correct | 26 ms | 1372 KB | Output is correct |
18 | Correct | 27 ms | 1884 KB | Output is correct |
19 | Correct | 36 ms | 1924 KB | Output is correct |
20 | Correct | 29 ms | 1616 KB | Output is correct |
21 | Correct | 29 ms | 2136 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 348 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 348 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 344 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |