제출 #1074404

#제출 시각아이디문제언어결과실행 시간메모리
1074404Malix열대 식물원 (Tropical Garden) (IOI11_garden)C++14
49 / 100
186 ms262144 KiB
#include "garden.h" #include "gardenlib.h" #include <bits/stdc++.h> using namespace std; #define REP(a,b,c) for(int a=b;a<c;a++) #define F first #define S second #define PB push_back #define LSOne(s) ((s)&(-s)) typedef long long ll; typedef vector<int> vi; typedef vector<vi> vii; typedef vector<vii> viii; typedef pair<int,int> pi; typedef vector<pi> pii; vii a; int k=0; int p=log2(1000000000); vector<vector<pii>> arr,brr; int solve(int x,int y){ int t=0; while(y){ int z=LSOne(y); pi tmp=arr[x][log2(z)+1][t]; x=tmp.F; if(tmp.S==a[x][0])t=1; else t=0; y-=z; } return x; } void count_routes(int n, int m, int P, int R[][2], int Q, int G[]) { a.resize(n); REP(i,0,m){ int x=R[i][0]; int y=R[i][1]; a[x].PB(y); a[y].PB(x); } arr.resize(n,vector<pii>(p+1,pii(2))); brr.resize(n,vector<pii>(p+1,pii(2))); REP(i,0,n){ arr[i][1][0]={a[i][0],i}; if(a[i].size()==1)arr[i][1][1]={a[i][0],i}; else arr[i][1][1]={a[i][1],i}; } //1 - came from larger REP(j,2,p+1)REP(i,0,n){ pi x=arr[i][j-1][0]; pi y=arr[i][j-1][1]; if(x.S==a[x.F][0])arr[i][j][0]=arr[x.F][j-1][1]; else arr[i][j][0]=arr[x.F][j-1][0]; if(y.S==a[y.F][0])arr[i][j][1]=arr[y.F][j-1][1]; else arr[i][j][1]=arr[y.F][j-1][0]; } int ans=0; REP(i,0,n)if(solve(i,G[0])==P)ans++; answer(ans); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...