Submission #1990

#TimeUsernameProblemLanguageResultExecution timeMemory
1990mh5664지우개 (GA4_eraser)C++98
100 / 100
25 ms4012 KiB
#include <stdio.h> #include <algorithm> using namespace std; const int MAXN = 100000; const long long int mod = 1000000007; long long int data[MAXN + 1]; long long int data2[MAXN + 1]; long long int sum[MAXN + 1]; long long int sum2[MAXN + 1]; int main () { int n; scanf ("%d", &n); for (int i = 0; i < n; ++i) { scanf ("%lld", &data[i]); } sort (data, data + n); sum[0] = data[0]; for (int i = 1; i < n; ++i) { sum[i] = (sum[i - 1] + data[i]) % mod; if (sum[i] < 0) sum[i] += mod; } for (int i = 0; i < n - 1; ++i) { if (data[i] == data[i + 1]) continue; else { long long int r; int s; r = ((sum[n - 1] - sum[i]) * data[i]) % mod; if (r < 0) r += mod; s = i; while (s >= 0) { if (data[s] != data[i]) break; data2[s] = r; --s; } } } sum2[0] = data2[0]; for (int i = 1; i < n - 1; ++i) { sum2[i] = (sum2[i - 1] + data2[i]) % mod; if (sum2[i] < 0) sum2[i] += mod; } long long int sol = 0; for (int i = 0; i < n - 2; ++i) { if (data[i] == data[i + 1]) continue; else { long long int r; int s; r = ((sum2[n - 2] - sum2[i]) * data[i]) % mod; if (r < 0) r += mod; s = i; while (s >= 0) { if (data[s] != data[i]) break; sol = (sol + r) % mod; if (sol < 0) sol += mod; --s; } } } printf ("%lld", sol); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...