Submission #1271275

#TimeUsernameProblemLanguageResultExecution timeMemory
1271275LmaoLmaoExamination (JOI19_examination)C++20
0 / 100
4 ms324 KiB
#include<bits/stdc++.h>
#define fi first
#define se second
#define int long long
using namespace std;

using ll = long long;
using ii = pair<int, int>;
using aa = array<int,4>;

const int N = 2e5+5;
const int INF = 1e9;
const int MOD = 998244353;  
int n,t;
int ans[N];
aa a[N],q[N];
vector<int>tree[N*4];
vector<int>nen;
vector<int> mergee(vector<int>a,vector<int>b)
{
    vector<int>c;
    merge(a.begin(),a.end(),b.begin(),b.end(),back_inserter(c));
    return c;
}
void update(int id,int l,int r,int pos,int val)
{
    if(pos>r||pos<l)return ;
    if(r==l)
    {
        tree[id].push_back(val);
        return ;
    }
    int mid=l+r>>1;
    update(id*2,l,mid,pos,val);
    update(id*2+1,mid+1,r,pos,val);
    tree[id]=mergee(tree[id*2],tree[id*2+1]);
}
int get(int id,int l,int r,int L,int R,int val)
{
    if(l>R||r<L)return 0;
    if(l>=L&&r<=R)
    {
        int j=lower_bound(tree[id].begin(),tree[id].end(),val)-tree[id].begin();
        return tree[id].size()-j;
    }
    int mid=l+r>>1;
    return get(id*2,l,mid,L,R,val)+get(id*2+1,mid+1,r,L,R,val);
}
bool cmp(aa a,aa b)
{
    return a[0]>b[0];
}
signed main()
{   
    ios_base::sync_with_stdio(false); 
    cin.tie(NULL);cout.tie(NULL);
    #ifndef ONLINE_JUDGE
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
    #endif
    cin>>n>>t;

    for(int i=1;i<=n;i++)
    {
        cin>>a[i][0]>>a[i][1];
        a[i][2]=a[i][0]+a[i][1];
        nen.push_back(a[i][2]);
    }
    for(int i=1;i<=t;i++)
    {
        for(int j=0;j<3;j++)cin>>q[i][j];
        nen.push_back(q[i][2]);
        q[i][3]=i;
    }
    sort(nen.begin(),nen.end());
    nen.erase(unique(nen.begin(),nen.end()),nen.end());
    int m=nen.size();
    for(int i=1;i<=n;i++)a[i][2]=lower_bound(nen.begin(),nen.end(),a[i][2])-nen.begin()+1;
    for(int i=1;i<=t;i++)q[i][2]=lower_bound(nen.begin(),nen.end(),q[i][2])-nen.begin()+1;
    sort(a+1,a+n+1,cmp);
    sort(q+1,q+t+1,cmp);
    int j=1;
    for(int i=1;i<=t;i++)
    {
        int x=q[i][0],y=q[i][1],z=q[i][2],id=q[i][3];
        while(j<=n&&a[j][0]>=x)
        {
            update(1,1,m,a[j][2],a[j][1]);
            j++;
        }
        ans[id]=get(1,1,m,z,m,y);
    }
    for(int i=1;i<=t;i++)cout<<ans[i]<<endl;
    return 0;
}
/*
██╗░░██╗██╗░░██╗░█████╗░███╗░░██╗░██████╗░              ░██████╗██╗██╗░░░██╗                ░█████╗░██╗░░░██╗████████╗███████╗
██║░██╔╝██║░░██║██╔══██╗████╗░██║██╔════╝░              ██╔════╝██║██║░░░██║                ██╔══██╗██║░░░██║╚══██╔══╝██╔════╝
█████═╝░███████║███████║██╔██╗██║██║░░██╗░              ╚█████╗░██║██║░░░██║                ██║░░╚═╝██║░░░██║░░░██║░░░█████╗░░
██╔═██╗░██╔══██║██╔══██║██║╚████║██║░░╚██╗              ░╚═══██╗██║██║░░░██║                ██║░░██╗██║░░░██║░░░██║░░░██╔══╝░░
██║░╚██╗██║░░██║██║░░██║██║░╚███║╚██████╔╝              ██████╔╝██║╚██████╔╝                ╚█████╔╝╚██████╔╝░░░██║░░░███████╗
╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝░╚═════╝░              ╚═════╝░╚═╝░╚═════╝░                ░╚════╝░░╚═════╝░░░░╚═╝░░░╚══════╝
*/

Compilation message (stderr)

examination.cpp: In function 'int main()':
examination.cpp:58:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   58 |     freopen("in.txt", "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
examination.cpp:59:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   59 |     freopen("out.txt", "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...