2009-04-25
久しぶりに過去問練習。Algorithm Tutorialsを見ながら過去問を解くの巻。
SRM236 Div1 Easy: BusinessTasks
Algorithm Tutorials: How To Find a Solution (by Dumitru) より
Straight-forward problems that don't require any special technique の例として挙げられている問題。
#define sz(a) int((a).size()) #define all(c) (c).begin(),(c).end() #define rep(var,n) for(int var=0;var<(n);var++) class BusinessTasks { public: string getTask(vector<string> list, int n) { n--; int N=sz(list),l=N,cur=0; rep(i,N-1){ cur=(cur+n)%l; list.erase(list.begin()+cur); l--; } return list[0]; } };
もうちょっとまとめて
#define sz(a) int((a).size()) #define rep(var,n) for(int var=0;var<(n);var++) class BusinessTasks { public: string getTask(vector<string> list, int n) { n--; for(int N=sz(list),cur=0;N>1;N--){ cur=(cur+n)%N; list.erase(list.begin()+cur); } return list[0]; } };