UVa 10881 Piotr's Ants
2013-04-01 09:04
337 查看
蚂蚁的相对顺序不变,因此把所有目标位置排序,从左到右对应初始状态下的蚂蚁。
#include<stdio.h> #include<algorithm> using namespace std; const int maxn =10000+5; struct node { int id; int p; int d; bool operator<(const node &a)const { return p<a.p; } }before[maxn],after[maxn]; const char dirName[][10]={"L","Turning","R"}; int order[maxn]; int main() { int k,i,p,d,T,L,n; char c; scanf("%d",&k); for(int Case=1;Case<=k;Case++) { scanf("%d%d%d",&L,&T,&n); // printf("+++++---"); for(i=0;i<n;i++) { scanf("%d %c",&p,&c); // printf("hahha"); d=(c=='L')?-1:1; before[i]=(node){i,p,d}; after[i]=(node){0,p+T*d,d}; } sort(before,before+n); // for(i=0;i<n;i++) // { // printf("%d%d%d++\n",before[i].id,before[i].p,before[i].d); // } // for(i=0;i<n;i++) // { // printf("%d%d%d-----------\n",after[i].id,after[i].p,after[i].d); // } for(i=0;i<n;i++) { order[before[i].id ]=i; } sort(after,after+n); //for(i=0;i<n;i++); // printf("%d ",order[i]); for(i=0;i<n-1;i++) if(after[i].p==after[i+1].p) after[i].d=after[i+1].d=0; // printf("hahha"); printf("Case #%d:\n",Case); for(i=0;i<n;i++) { int a=order[i]; if(after[a].p<0 || after[a].p>L) printf("Fell off\n"); else printf("%d %s\n",after[a].p,dirName[after[a].d+1]); } printf("\n"); } //for(;;); return 0; }
相关文章推荐
- UVa 10881 Piotr's Ants (排序)
- UVA10881 Piotr's Ants (模拟)
- UVA 10881 Piotr's Ants -
- uva 10881 Piotr's Ants 模拟
- Uva-10881-Piotr's Ants
- UVA - 10881 Piotr's Ants 推理
- UVA-10881 - Piotr's Ants-2014年4月20日161403
- UVA - 10881 Piotr's Ants
- UVa 10881 - Piotr's Ants(精巧)
- uva 10881 - Piotr's Ants
- uva - 10881 - Piotr's Ants(等效变换,排序)
- UVA - 10881 Piotr's Ants
- Uva 10881 Piotr's Ants (模拟+思维)
- uva_10881_Piotr's Ants (模拟,Sort)
- Uva10881 Piotr's Ants
- UVA 10881 - Piotr‘s Ants
- UVA-10881 - Piotr's Ants
- UVA 10881 Piotr's Ants
- UVA 10881 - Piotr's Ants(等效变换)
- UVA 10881 - Piotr's Ants(思维题)