Submission #72728736
Source Code Expand
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <map>
using namespace std;
long long gcd(long long a, long long b){
if(b == 0)return a;
return gcd(b, a%b);
}
bool com(pair<long long, long long>a, pair<long long, long long>b){
if( a.first * b.second < b.first* a.second){
return 1;
}
else return 0;
}
map<pair<long long, pair<long long, long long>>, long long>m;
map<pair<long long, pair<long long, long long>>, long long>m2;
long long n, q;
vector<pair<long long, pair<long long, long long>>>v;
bool cmps(pair<long long, pair<long long, long long>>a, pair<long long, pair<long long, long long>>b){
long long e = a.first;
long long r = b.first;
if(e == 0 && r == 0){
return a.second.first > b.second.first;
}
if(e == 1 && r == 0){
return 0;
}
if(e == 2 && r == 0){
if(b.second.first>0)return 0;
return 1;
}
if(e == 0 && r == 1){
return 1;
}
if(e == 1 && r == 1){
return com(b.second, a.second);
}
if(e == 2 && r == 1){
return 1;
}
if(e == 0 && r == 2){
if(a.second.first>0)return 1;
return 0;
}
if(e == 1 && r == 2){
return 0;
}
if(e == 2 && r == 2){
return com(b.second, a.second);
}
}
pair<long long, pair<long long, long long>>arr[2000001];
long long pfx[2000001];
int main() {
cin >> n >> q;
for(long long i =1; i<=n; i++){
long long a, b;
cin >>a >> b;
pair<long long, pair<long long, long long>> t; // 0 : 무한대 1 : - 2 : +
if(a < 0)t.first = 1;
if(a>0)t.first = 2;
if(a == 0){
if(b <0){
t.first = 0;
t.second = {-1, 0};
}
else{
t.first = 0;
t.second = {1, 0};
}
}
else if(b==0){
t.second = {0, 1};
}
else{
long long g;
if(a*b < 0){
if(a<0){
a *= -1;
b *= -1;
}
g = gcd(a, -b);
}
else if(a<0 && b<0){
a *= -1;
b *= -1;
g = gcd(a, b);
}
else{
g = gcd(a, b);
}
a /= g;
b /= g;
t.second = {b, a};
}
if(m.find(t) == m.end()){
m.insert({t, 1});
v.push_back(t);
}
else m[t]++;
arr[i] = t;
//cout << t.first<<t.second.first << t.second.second << '\n';
}
sort(v.begin(), v.end(), cmps);
for(long long i = 0; i<v.size(); i++){
m2.insert({v[i], i});
pfx[i] = ((i>0)?pfx[i-1] : 0) + m[v[i]];
}
for(long long i = v.size(); i<2*v.size(); i++){
pfx[i] = pfx[i-1] + m[v[i-v.size()]];
}
//for(long long i =0; i<v.size(); i++)cout << v[i].first << v[i].second.first << v[i].second.second << '\n';
for(long long i = 1; i<=q; i++){
long long a, b;
cin >>a >>b;
long long i1 = m2[arr[a]];
long long i2 = m2[arr[b]];
if(i1 > i2)i2 += v.size();
if(i1 == 0){
cout << pfx[i2] << '\n';
}
else cout << pfx[i2] - pfx[i1-1] << '\n';
}
return 0;
}
Submission Info
Submission Time
2026-01-24 22:32:47+0900
Task
E - Laser Takahashi
User
tonystar0420
Language
C++23 (GCC 15.2.0)
Score
450
Code Size
3534 Byte
Status
AC
Exec Time
805 ms
Memory
47108 KiB
Compile Error
./Main.cpp: In function 'int main()':
./Main.cpp:109:27: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, std::pair<long long int, long long int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
109 | for(long long i = 0; i<v.size(); i++){
| ~^~~~~~~~~
./Main.cpp:113:34: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, std::pair<long long int, long long int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
113 | for(long long i = v.size(); i<2*v.size(); i++){
| ~^~~~~~~~~~~
./Main.cpp: In function 'bool cmps(std::pair<long long int, std::pair<long long int, long long int> >, std::pair<long long int, std::pair<long long int, long long int> >)':
./Main.cpp:54:1: warning: control reaches end of non-void function [-Wreturn-type]
54 | }
| ^
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
450 / 450
Status
Set Name
Test Cases
Sample
00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All
00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 02_random2_00.txt, 02_random2_01.txt, 02_random2_02.txt, 02_random2_03.txt, 02_random2_04.txt, 02_random2_05.txt, 02_random2_06.txt, 02_random2_07.txt, 02_random2_08.txt, 02_random2_09.txt, 03_random3_00.txt, 03_random3_01.txt, 03_random3_02.txt, 03_random3_03.txt, 03_random3_04.txt, 04_handmade_00.txt, 04_handmade_01.txt, 04_handmade_02.txt, 05_killer_00.txt, 05_killer_01.txt
Case Name
Status
Exec Time
Memory
00_sample_00.txt
AC
1 ms
3448 KiB
00_sample_01.txt
AC
1 ms
3464 KiB
00_sample_02.txt
AC
1 ms
3464 KiB
01_random_00.txt
AC
268 ms
13456 KiB
01_random_01.txt
AC
612 ms
46148 KiB
01_random_02.txt
AC
667 ms
41996 KiB
01_random_03.txt
AC
21 ms
5156 KiB
01_random_04.txt
AC
649 ms
47036 KiB
01_random_05.txt
AC
805 ms
47108 KiB
01_random_06.txt
AC
782 ms
47028 KiB
01_random_07.txt
AC
794 ms
46964 KiB
01_random_08.txt
AC
797 ms
47064 KiB
01_random_09.txt
AC
779 ms
47036 KiB
02_random2_00.txt
AC
728 ms
41732 KiB
02_random2_01.txt
AC
705 ms
41740 KiB
02_random2_02.txt
AC
719 ms
41776 KiB
02_random2_03.txt
AC
726 ms
41892 KiB
02_random2_04.txt
AC
694 ms
41776 KiB
02_random2_05.txt
AC
714 ms
41800 KiB
02_random2_06.txt
AC
695 ms
41736 KiB
02_random2_07.txt
AC
698 ms
41772 KiB
02_random2_08.txt
AC
703 ms
41736 KiB
02_random2_09.txt
AC
708 ms
41760 KiB
03_random3_00.txt
AC
644 ms
39228 KiB
03_random3_01.txt
AC
504 ms
31464 KiB
03_random3_02.txt
AC
412 ms
23588 KiB
03_random3_03.txt
AC
307 ms
15836 KiB
03_random3_04.txt
AC
218 ms
8256 KiB
04_handmade_00.txt
AC
187 ms
8160 KiB
04_handmade_01.txt
AC
187 ms
8108 KiB
04_handmade_02.txt
AC
122 ms
3680 KiB
05_killer_00.txt
AC
621 ms
43120 KiB
05_killer_01.txt
AC
636 ms
43116 KiB