제출 #1274840

#제출 시각아이디문제언어결과실행 시간메모리
1274840vulestamenkovicZvijezda (COCI19_zvijezda)C++20
0 / 110
61 ms2000 KiB
#include<bits/stdc++.h> #define int long long #define MAXN (int)1e5+5 #define pii pair<int,int> #define fi first #define se second using namespace std; int x[MAXN],y[MAXN]; bool query(int s1,int s2,array<int,2>t){ int j=0; while((s1==j)||(s2==j)){ j++; } int o=(x[s2]-x[s1])*(t[1]-y[s2])-(t[0]-x[s2])*(y[s2]-y[s1]), o2=(x[s2]-x[s1])*(y[j]-y[s2])-(x[j]-x[s2])*(y[s2]-y[s1]); return (abs(o+o2)==abs(o)+abs(o2)); } void solve() { int t,n,q;cin>>t>>n; for(int i=0;i<n;i++){ cin>>x[i]>>y[i]; } cin>>q; int z=0; while(q--){ int a,b;cin>>a>>b; a^=(t*z*z*z); b^=(t*z*z*z); int o=query(0,1,{a,b}), o2=query(n/2,n/2+1,{a,b}); if(o==o2){ z+=o; cout<<(o?"DA\n":"NE\n");continue; } int l=2,r=n/2,ans=1; while(l<=r){ int s=(l+r)/2; if(query(s-1,s,{a,b})==o){ ans=s; l=s+1; }else{ r=s-1; } } l=n/2+2,r=n; int ans2=n/2+1; while(l<=r){ int s=(l+r)/2; if(query(s-1,s%n,{a,b})==o2){ ans2=s; l=s+1; }else{ r=s-1; } } r=ans+n-ans2; //cout<<o<<' '<<r<<'\n'; if((o&&r>n/2)||(!o&&r<n/2)){z++; cout<<"DA\n"; }else{ cout<<"NE\n"; } } } int32_t main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int32_t T=1;//cin>>T; while(T--) { solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...