#include <cstdio>
#define ll long long
#define MIL 1000000
ll* arr(int s) {
ll* a = new ll[s];
for(int i=0;i<s;i++) {
a[i] = 0;
}
return a;
}
int main(int argc, char** argv) {
int n,r,c;
int* a = new int[256000];
scanf("%d",&n);
for(int i=0;i<n;i++) {
scanf("%d%d",&r,&c);
a[i] = r;
}
ll* u = arr(MIL+2);
for(int i=0;i<n;i++) {
u[a[i]]++;
}
ll* s = arr(MIL+2);
ll* zPre = arr(MIL+2);
ll* zPost = arr(MIL+2);
for(int i=1;i<=MIL;i++) {
s[i] = s[i-1] + u[i];
zPre[i] = zPre[i-1] + ((ll)u[i])*i;
}
for(int i=MIL;i>=0;i--) {
zPost[i] = zPost[i+1] + ((ll)u[i])*i;
}
for(int i=0;i<n;i++) {
int d = a[i];
ll pre = zPre[MIL] - zPre[d] - (s[MIL] - s[d]);
ll post = zPost[0] - zPost[d] + s[d-1];
ll res = pre + post + ((ll)u[a[i]]) * d;
printf("%lld\n", res);
}
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #include <cstdio> #define ll long long #define MIL 1000000 ll* arr(int s) { ll* a = new ll[s]; for(int i=0;i<s;i++) { a[i] = 0; } return a; } int main(int argc, char** argv) { int n,r,c; int* a = new int[256000]; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d%d",&r,&c); a[i] = r; } ll* u = arr(MIL+2); for(int i=0;i<n;i++) { u[a[i]]++; } ll* s = arr(MIL+2); ll* zPre = arr(MIL+2); ll* zPost = arr(MIL+2); for(int i=1;i<=MIL;i++) { s[i] = s[i-1] + u[i]; zPre[i] = zPre[i-1] + ((ll)u[i])*i; } for(int i=MIL;i>=0;i--) { zPost[i] = zPost[i+1] + ((ll)u[i])*i; } for(int i=0;i<n;i++) { int d = a[i]; ll pre = zPre[MIL] - zPre[d] - (s[MIL] - s[d]); ll post = zPost[0] - zPost[d] + s[d-1]; ll res = pre + post + ((ll)u[a[i]]) * d; printf("%lld\n", res); } return 0; } |
English