CSES - Leirikisa 5 - Results
Submission details
Task:burek
Sender:Hansuzu
Submission time:2016-08-02 15:39:38 +0300
Language:C++
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED100
Test results
testverdicttime
#1ACCEPTED0.06 sdetails
#2ACCEPTED0.06 sdetails
#3ACCEPTED0.05 sdetails
#4ACCEPTED0.10 sdetails
#5ACCEPTED0.15 sdetails
#6ACCEPTED0.14 sdetails
#7ACCEPTED0.17 sdetails
#8ACCEPTED0.19 sdetails

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:58:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i=0; i<xp.size(); ++i){
                           ^
input/code.cpp:63:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i=0; i<yp.size(); ++i){
                           ^

Code

#include <iostream>
#include <algorithm>
#include <vector>
#define MP make_pair
#define F first
#define S second
using namespace std;
int N, M;

vector<int> xs;
int mx[1222333];
vector<int> ys;
int my[1222333];

vector<pair<int, int> > xp;
vector<pair<int, int> > yp;

int stx[404040];

int sty[404040];

vector<pair<char, int> > cuts;

int main(){
  ios_base::sync_with_stdio(0); cin.tie(0);
  cin >> N;
  for (int i=0; i<N; ++i){
    int x1, y1, x2, y2, x3, y3;
    cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
    int xn=min(x1, min(x2, x3));
    int xx=max(x1, max(x2, x3));
    int yn=min(y1, min(y2, y3));
    int yx=max(y1, max(y2, y3));
    xp.push_back(MP(xn, xx));
    yp.push_back(MP(yn, yx));
    xs.push_back(xn);
    xs.push_back(xx);
    ys.push_back(yn);
    ys.push_back(yx);
  }
  cin >> M;
  for (int i=0; i<M; ++i){
    char c, t;
    int p;
    cin >> c >> t >> p;
    cuts.push_back(MP(c, p));
    if (c=='y') ys.push_back(p);
    else xs.push_back(p);
  }
  sort(xs.begin(), xs.end());
  sort(ys.begin(), ys.end());
  
  int ii=0;
  for (auto a:xs) mx[a]=ii, ++ii;
  ii=0;
  for (auto a:ys) my[a]=ii, ++ii;
  
  for (int i=0; i<xp.size(); ++i){
    ++stx[mx[xp[i].F]+1];
    --stx[mx[xp[i].S]];
  }
  for (int i=1; i<404040; ++i) stx[i]+=stx[i-1];
  for (int i=0; i<yp.size(); ++i){
    ++sty[my[yp[i].F]+1];
    --sty[my[yp[i].S]];
  }
  for (int i=1; i<404040; ++i) sty[i]+=sty[i-1];
  for (int i=0; i<M; ++i){
    char c=cuts[i].F;
    int p=cuts[i].S;
    if (c=='y'){
      cout << sty[my[p]] << "\n";
    }else{
      cout << stx[mx[p]] << "\n";
    }
  }
}

Test details

Test 1

Verdict: ACCEPTED

input
3
1 0 0 2 2 2
1 3 3 5 4 0
5 4 4 5 4 4
4
...

correct output
0
1
1
2

user output
0
1
1
2

Test 2

Verdict: ACCEPTED

input
4
2 7 6 0 0 5
7 1 7 10 11 11
5 10 2 9 6 8
1 9 10 10 4 1
...

correct output
3
2
3
2

user output
3
2
3
2

Test 3

Verdict: ACCEPTED

input
10
84 4 53 58 73 85
60 24 59 23 1 11
80 69 61 57 83 91
84 91 3 97 1 94
...

correct output
0
4
1
1
5
...

user output
0
4
1
1
5
...

Test 4

Verdict: ACCEPTED

input
70000
523716 152076 196820 312652 75...

correct output
3714
48672
41227
51089
19907
...

user output
3714
48672
41227
51089
19907
...

Test 5

Verdict: ACCEPTED

input
100000
554 492 443 655 24 170
867 578 502 743 73 276
738 487 297 633 494 469
753 268 131 447 924 530
...

correct output
73985
28536
71335
58180
74422
...

user output
73985
28536
71335
58180
74422
...

Test 6

Verdict: ACCEPTED

input
99999
556 490 167 620 238 60
214 608 982 363 975 378
557 111 872 233 227 61
58 477 37 808 578 225
...

correct output
57947
50886
46878
70092
16298
...

user output
57947
50886
46878
70092
16298
...

Test 7

Verdict: ACCEPTED

input
99999
521698 336192 884832 495601 73...

correct output
2710
18050
45557
42424
4570
...

user output
2710
18050
45557
42424
4570
...

Test 8

Verdict: ACCEPTED

input
100000
702229 435001 483066 464189 74...

correct output
66201
69812
28734
33874
14815
...

user output
66201
69812
28734
33874
14815
...