답안 #874616

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
874616 2023-11-17T11:59:00 Z josanneo22 Pairs (IOI07_pairs) C++17
60 / 100
41 ms 10840 KB
/*
Problem: IOI 2007 Pairs
When:    2023-11-16 14:54:19
Author:  Ning07
*/

#include<bits/stdc++.h>
using namespace std;
using i64=long long;

const int NN=2e5;
int N,B,M,D,a[NN],x[NN],y[NN];

void solve1(){
    for(int i=0;i<N;i++){
        std::cin>>a[i];
    }
    sort(a,a+N);
    i64 ans=0;
    for(int i=0;i<N;i++){
        int lst=lower_bound(a,a+N,a[i]-D)-a;
        ans+=i-lst;
    }
    std::cout<<ans<<'\n';
}
i64 tr[NN<<1];
void update(int x,i64 v){
    x+=NN;
    for(;x;x/=2){ tr[x]+=v;}
}
i64 get(int x,int y){
    x+=NN; y+=NN;
    i64 res=0;
    while(x<=y){
        if(x%2==1) res+=tr[x++];
        if(y%2==0) res+=tr[y--];
        x/=2; y/=2;
    }
    return res;
}
void solve2(){
    vector<int> pos[75000*2+500];
    i64 ans=0;
    for(int i=0;i<N;i++){
        std::cin>>x[i]>>y[i];
        pos[x[i]+y[i]].push_back(x[i]-y[i]+M);
    }
    for(int i=2;i<=2*M;i++){
        for(auto &u:pos[i]){
            ans+=get(max(0,u-D),min(2*M,u+D));
            update(u,1);
        }
        if(i-D<=0) continue;
        for(auto &u:pos[i-D]) update(u,-1); 
    }
    std::cout<<ans<<'\n';
}
void solve3(){
    std::cout<<"fck this\n";
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr); cout.tie(nullptr);

    std::cin>>B>>N>>D>>M;
    if(B==1) solve1();
    else if(B==2) solve2();
    else if(B==3) solve3();
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 1116 KB Output is correct
2 Correct 11 ms 1240 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 17 ms 1628 KB Output is correct
2 Correct 14 ms 1880 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 18 ms 1612 KB Output is correct
2 Correct 16 ms 1628 KB Output is correct
3 Correct 15 ms 1524 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 7772 KB Output is correct
2 Correct 4 ms 7772 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 17 ms 7260 KB Output is correct
2 Correct 15 ms 7128 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 22 ms 7628 KB Output is correct
2 Correct 23 ms 7552 KB Output is correct
3 Correct 24 ms 7516 KB Output is correct
4 Correct 23 ms 7372 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 40 ms 10840 KB Output is correct
2 Correct 41 ms 10820 KB Output is correct
3 Correct 27 ms 9564 KB Output is correct
4 Correct 36 ms 9696 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 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 -