QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#380687#8050. Random PermutationpopeWA 1ms3692kbC++142.1kb2024-04-07 08:45:522024-04-07 08:45:53

Judging History

你现在查看的是最新测评结果

  • [2024-04-07 08:45:53]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3692kb
  • [2024-04-07 08:45:52]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
#define rep(i, a, b) for(int i = a; i < (b); i++)
#define all(x) begin(x),end(x)
#define sz(x) (int)(x).size()
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;

#define trav(a, x) for (auto& a: x)
#define f first
#define s second
#define pb push_back
const char nl = '\n';

#ifdef DBG
void dbg_out() { cerr << nl; }
template <typename Head, typename... Tail>
void dbg_out(Head H, Tail... T) {
    cerr << ' ' << H;
    dbg_out(T...);
}
#define dbg(...) dbg_out(__VA_ARGS__)
#else
#define dbg(...)
#endif

mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
int main() {
    cin.tie(0)->sync_with_stdio(0);
    cin.exceptions(cin.failbit);
    int n;
    cin >> n;
    // n = (int)3e5;
    vector<int> a(n);
    srand(40);
    for(int i = 0; i<n; i++){
        cin >> a[i];
        // a[i] = i+1;
    }
    // random_shuffle(a.begin(),a.end());
    vector<int> sums(3*n);
    int shift = n;
    ll ans = 0LL;
    cout << "HI " << endl;
    for(int i = 0; i<n; i++){
        // cout << "HI " << i << endl;
        int val = max(n/2-a[i],a[i]-n/2);
        val = max(val,1);
        int wid = (int)min((ll)n,(ll)(5LL*(ll)n*(ll)n/val/val));
        // int wid = (int)min((ll)n,5LL*(ll)n*(ll)n/val/val);
        wid = max(wid,300);
        int sum = 0;
        int l = max(0,i-wid);
        int r = min(n-1,i+wid);
        ll cur = 0LL;
        for(int j = i; j>=l; j--){
            if(j < i){
                sum += ((a[j]>a[i])?1:-1);
            }
            sums[sum+shift]++;
        }
        sum = 0;
        for(int j = i; j<=r; j++){
            if(j>i){
                sum += ((a[j]>a[i])?1:-1);
            }
            cur += sums[shift-sum];
            cur += sums[shift-sum+1];
        }
        sum = 0;
        for(int j = i; j>=l; j--){
            if(j < i){
                sum += ((a[j]>a[i])?1:-1);
            }
            sums[sum+shift] = 0;
        }
        ans += cur*a[i];
    }
    cout << ans << endl;

}

詳細信息

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 3692kb

input:

4
1 4 2 3

output:

HI 
22

result:

wrong output format Expected integer, but "HI" found