Submission #617335

#TimeUsernameProblemLanguageResultExecution timeMemory
617335errorgorn별자리 2 (JOI14_constellation2)C++17
100 / 100
1310 ms552 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define ii pair<int,int> #define fi first #define se second #define endl '\n' #define puf push_front #define pof pop_front #define pub push_back #define pob pop_back #define lb lower_bound #define ub upper_bound #define rep(x,s,e) for (int x=(s)-((s)>(e));x!=(e)-((s)>(e));((s)<(e))?x++:x--) #define all(x) (x).begin(),(x).end() #define sz(x) (int) (x).size() mt19937 rng(chrono::system_clock::now().time_since_epoch().count()); const double TAU=acos(-1)*2; int n; ii arr[3005]; int w[3005]; int cnt[2][3]; double diff(double i,double j){ double res=j-i; if (res<0) res+=TAU; return res; } signed main(){ cin.tie(0); cout.tie(0); cin.sync_with_stdio(false); cin>>n; rep(x,0,n) cin>>arr[x].fi>>arr[x].se>>w[x]; int ans=0; rep(x,0,n){ #define di pair<double,int> vector<di> v; rep(y,0,n) if (x!=y){ v.pub({atan2(arr[y].fi-arr[x].fi,arr[y].se-arr[x].se)+TAU/2,y}); } sort(all(v)); //for (auto [a,b]:v) cout<<a<<"_"<<b<<" "; cout<<endl; memset(cnt,0,sizeof(cnt)); rep(y,0,n) if (x!=y) cnt[0][w[y]]++; int idx=0; rep(y,0,sz(v)){ cnt[1][w[v[y].se]]--; cnt[0][w[v[y].se]]++; while (diff(v[y].fi,v[idx].fi)<TAU/2){ cnt[0][w[v[idx].se]]--; cnt[1][w[v[idx].se]]++; idx=(idx+1)%sz(v); if (idx==y) break; } //cout<<x<<" "<<v[y].se<<endl; //rep(x,0,3) cout<<cnt[0][x]<<" "; cout<<endl; //rep(x,0,3) cout<<cnt[1][x]<<" "; cout<<endl; int curr=1; rep(i,0,3) if (i!=w[v[y].se]) curr*=cnt[0][i]; rep(i,0,3) if (i!=w[x]) curr*=cnt[1][i]; ans+=curr; } } cout<<ans/2<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...