Submission #348279

# Submission time Handle Problem Language Result Execution time Memory
348279 2021-01-14T13:20:48 Z uacoder123 Examination (JOI19_examination) C++14
43 / 100
3000 ms 243412 KB
            #include <bits/stdc++.h>
            #include <ext/pb_ds/assoc_container.hpp>
            using namespace std;
            using namespace __gnu_pbds;
            #define F first
            #define S second
            #define FOR(i,a,b) for (auto i = (a); i <= (b); ++i)
            #define NFOR(i,a,b) for(auto i = (a); i >= (b); --i)
            #define all(x) (x).begin(), (x).end()
            #define sz(x) int(x.size())
            #define mp(i,a) make_pair(i,a)
            #define pb(a) push_back(a)
            #define bit(x,b) (x&(1LL<<b))
             
            typedef int lli;
            typedef pair <lli,lli> ii;
            typedef pair <lli,ii> iii;
            typedef vector <lli> vi;
            typedef tree<
            ii,
            null_type,
            less<ii>,
            rb_tree_tag,
            tree_order_statistics_node_update>
            ordered_set;
             
            ordered_set segt[8*100000+1];
            lli n,q,co=1;
            void up(lli node,lli l,lli r,lli in,lli v)
            {
              segt[node].insert(mp(v,co));
              co++;
              lli m=(l+r)/2;
              if(l!=r)
              {
                if(in<=m)
                  up(2*node+1,l,m,in,v);
                else
                  up(2*node+2,m+1,r,in,v);
              }
            }
            lli query(lli node,lli l,lli r,lli s,lli e,lli v)
            {
              if(r<s||l>e)
                return(0);
              if(l>=s&&r<=e)
                return segt[node].size()-segt[node].order_of_key(mp(v,0));
              lli m=(l+r)/2;
              lli q1=query(2*node+1,l,m,s,e,v),q2=query(2*node+2,m+1,r,s,e,v);
              return(q1+q2);
            }
            int main()
            {
              ios_base::sync_with_stdio(false);
              cin.tie(NULL);
              cin>>n>>q;
              set<long long int> v,v1;
              unordered_map<long long int,lli> m,m1;
              ii s[n];
              pair<ii,long long int> qu[q];
              for(lli i=0;i<n;++i)
              {
                cin>>s[i].F>>s[i].S;
                v.insert(s[i].F);
                v1.insert(s[i].F*1LL+s[i].S);
              }
              for(lli i=0;i<q;++i)
              {
                cin>>qu[i].F.F>>qu[i].F.S>>qu[i].S;
                v.insert(qu[i].F.F);
                v1.insert(qu[i].S*1LL); 
              }
              auto it=v.begin();
              lli c=0;
              while(it!=v.end())
              {
                m[(*it)]=c;
                c++;
                it++;
              }
              vector<vector<iii>> quer;
              vi sums;
              for(lli i=0;i<n;++i)
              {
                lli su=s[i].F*1LL+s[i].S;
                s[i].F=m[s[i].F];
                if(m1.find(su)==m1.end())
                {
                  m1[su]=quer.size();
                  quer.pb(vector<iii>(0));
                  sums.pb(su);              
                }
                quer[m1[su]].pb(mp(-1,mp(s[i].F,s[i].S)));
              }
              for(lli i=0;i<q;++i)
              {
                qu[i].F.F=m[qu[i].F.F];
                if(m1.find(qu[i].S)==m1.end())
                {
                  m1[qu[i].S]=quer.size();
                  quer.pb(vector<iii>(0));
                  sums.pb(qu[i].S);              
                }
                quer[m1[qu[i].S]].pb(mp(i,mp(qu[i].F.F,qu[i].F.S)));  
              }
              sort(all(sums));
              lli ans[q]={};
              for(lli i=sums.size()-1;i>=0;--i)
              {
                lli j=0;
                for(;j<quer[m1[sums[i]]].size();++j)
                {
                  if(quer[m1[sums[i]]][j].F==-1)
                    up(0,0,c-1,quer[m1[sums[i]]][j].S.F,quer[m1[sums[i]]][j].S.S);
                  else
                    break;
              }
                for(;j<quer[m1[sums[i]]].size();++j)
                  ans[quer[m1[sums[i]]][j].F]=query(0,0,c-1,quer[m1[sums[i]]][j].S.F,c-1,quer[m1[sums[i]]][j].S.S);
              }
              for(lli i=0;i<q;++i)
                cout<<ans[i]<<'\n';
              return(0);
            }

Compilation message

examination.cpp: In function 'int main()':
examination.cpp:111:23: warning: comparison of integer expressions of different signedness: 'lli' {aka 'int'} and 'std::vector<std::pair<int, std::pair<int, int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  111 |                 for(;j<quer[m1[sums[i]]].size();++j)
      |                      ~^~~~~~~~~~~~~~~~~~~~~~~~~
examination.cpp:118:23: warning: comparison of integer expressions of different signedness: 'lli' {aka 'int'} and 'std::vector<std::pair<int, std::pair<int, int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  118 |                 for(;j<quer[m1[sums[i]]].size();++j)
      |                      ~^~~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 78 ms 75628 KB Output is correct
2 Correct 75 ms 75628 KB Output is correct
3 Correct 71 ms 75500 KB Output is correct
4 Correct 72 ms 75500 KB Output is correct
5 Correct 74 ms 75628 KB Output is correct
6 Correct 73 ms 75628 KB Output is correct
7 Correct 95 ms 79724 KB Output is correct
8 Correct 97 ms 79724 KB Output is correct
9 Correct 98 ms 79724 KB Output is correct
10 Correct 104 ms 79724 KB Output is correct
11 Correct 93 ms 77548 KB Output is correct
12 Correct 80 ms 76524 KB Output is correct
13 Correct 95 ms 79340 KB Output is correct
14 Correct 105 ms 79468 KB Output is correct
15 Correct 91 ms 79340 KB Output is correct
16 Correct 77 ms 76524 KB Output is correct
17 Correct 92 ms 79724 KB Output is correct
18 Correct 76 ms 76268 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2660 ms 209828 KB Output is correct
2 Correct 2672 ms 210000 KB Output is correct
3 Correct 2750 ms 210156 KB Output is correct
4 Correct 1740 ms 208712 KB Output is correct
5 Correct 628 ms 119804 KB Output is correct
6 Correct 484 ms 110880 KB Output is correct
7 Correct 2504 ms 205648 KB Output is correct
8 Correct 2569 ms 210052 KB Output is correct
9 Correct 2291 ms 205424 KB Output is correct
10 Correct 350 ms 103648 KB Output is correct
11 Correct 1487 ms 208264 KB Output is correct
12 Correct 407 ms 100576 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2660 ms 209828 KB Output is correct
2 Correct 2672 ms 210000 KB Output is correct
3 Correct 2750 ms 210156 KB Output is correct
4 Correct 1740 ms 208712 KB Output is correct
5 Correct 628 ms 119804 KB Output is correct
6 Correct 484 ms 110880 KB Output is correct
7 Correct 2504 ms 205648 KB Output is correct
8 Correct 2569 ms 210052 KB Output is correct
9 Correct 2291 ms 205424 KB Output is correct
10 Correct 350 ms 103648 KB Output is correct
11 Correct 1487 ms 208264 KB Output is correct
12 Correct 407 ms 100576 KB Output is correct
13 Correct 2634 ms 215736 KB Output is correct
14 Correct 2935 ms 214860 KB Output is correct
15 Correct 2541 ms 209820 KB Output is correct
16 Correct 1693 ms 211336 KB Output is correct
17 Correct 687 ms 122612 KB Output is correct
18 Correct 456 ms 111092 KB Output is correct
19 Correct 2546 ms 215560 KB Output is correct
20 Correct 2592 ms 214760 KB Output is correct
21 Correct 2422 ms 214152 KB Output is correct
22 Correct 332 ms 103236 KB Output is correct
23 Correct 1391 ms 208140 KB Output is correct
24 Correct 394 ms 100628 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 78 ms 75628 KB Output is correct
2 Correct 75 ms 75628 KB Output is correct
3 Correct 71 ms 75500 KB Output is correct
4 Correct 72 ms 75500 KB Output is correct
5 Correct 74 ms 75628 KB Output is correct
6 Correct 73 ms 75628 KB Output is correct
7 Correct 95 ms 79724 KB Output is correct
8 Correct 97 ms 79724 KB Output is correct
9 Correct 98 ms 79724 KB Output is correct
10 Correct 104 ms 79724 KB Output is correct
11 Correct 93 ms 77548 KB Output is correct
12 Correct 80 ms 76524 KB Output is correct
13 Correct 95 ms 79340 KB Output is correct
14 Correct 105 ms 79468 KB Output is correct
15 Correct 91 ms 79340 KB Output is correct
16 Correct 77 ms 76524 KB Output is correct
17 Correct 92 ms 79724 KB Output is correct
18 Correct 76 ms 76268 KB Output is correct
19 Correct 2660 ms 209828 KB Output is correct
20 Correct 2672 ms 210000 KB Output is correct
21 Correct 2750 ms 210156 KB Output is correct
22 Correct 1740 ms 208712 KB Output is correct
23 Correct 628 ms 119804 KB Output is correct
24 Correct 484 ms 110880 KB Output is correct
25 Correct 2504 ms 205648 KB Output is correct
26 Correct 2569 ms 210052 KB Output is correct
27 Correct 2291 ms 205424 KB Output is correct
28 Correct 350 ms 103648 KB Output is correct
29 Correct 1487 ms 208264 KB Output is correct
30 Correct 407 ms 100576 KB Output is correct
31 Correct 2634 ms 215736 KB Output is correct
32 Correct 2935 ms 214860 KB Output is correct
33 Correct 2541 ms 209820 KB Output is correct
34 Correct 1693 ms 211336 KB Output is correct
35 Correct 687 ms 122612 KB Output is correct
36 Correct 456 ms 111092 KB Output is correct
37 Correct 2546 ms 215560 KB Output is correct
38 Correct 2592 ms 214760 KB Output is correct
39 Correct 2422 ms 214152 KB Output is correct
40 Correct 332 ms 103236 KB Output is correct
41 Correct 1391 ms 208140 KB Output is correct
42 Correct 394 ms 100628 KB Output is correct
43 Execution timed out 3007 ms 243412 KB Time limit exceeded
44 Halted 0 ms 0 KB -