Submission #558396

#TimeUsernameProblemLanguageResultExecution timeMemory
558396fatemetmhrDragon 2 (JOI17_dragon2)C++17
15 / 100
124 ms31504 KiB
// Be name khoda // #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef complex<ll> point; #define all(x) x.begin(), x.end() #define fi first #define se second #define pb push_back const int maxn5 = 4e3 + 10; const int maxnt = 4e5 + 10; point p[maxn5]; int cnt[maxn5][maxn5], ty[maxn5]; inline bool pari(ll a){ return a > 0; } inline ll crossz(point a, point b){ return real(a) * imag(b) - imag(a) * real(b); } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, m, q; cin >> n >> m; for(int i = 0; i < n; i++){ int x, y; cin >> x >> y >> ty[i]; p[i] = {x, y}; } int x, y; cin >> x >> y; point a = {x, y}; cin >> x >> y; point b = {x, y}; for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) if(ty[i] != ty[j]){ ll salp = crossz(p[i] - a, p[j] - p[i]), m = crossz(b - a, p[j] - p[i]); ll sbet = crossz(p[i] - a, b - a); //cout << i << ' ' << j << ' ' << salp << ' ' << sbet << ' ' << m << endl; if(m == 0) continue; if((pari(salp) == pari(m) || salp == 0) && (pari(m) ? salp <= m : salp >= m) && (pari(sbet) == pari(m) || sbet == 0)){ cnt[ty[i]][ty[j]]++; //cout << "we found " << i << ' ' << j << endl; } } cin >> q; for(int i = 0; i < q; i++){ int a, b; cin >> a >> b; cout << cnt[a][b] << '\n'; } } /* 3 3 1 3 2 6 1 4 5 3 3 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...