hdu 1084
2011-04-21 11:22
218 查看
#include<stdio.h> #include<stdlib.h> #include<string.h> struct elem{ int x; char s[22]; int ti; }; int cmp(const void *a,const void *b) { return strcmp(((elem*)a)->s,((elem*)b)->s); } int main() { int n; int i; int flag1,flag2,flag3,flag4; int k1,k2,k3,k4; elem arr[100]; int mark[100]; while(scanf("%d",&n) == 1 && n != -1){ flag1 = flag2 = flag3 = flag4 = 0; for(i = 0;i < n;i++){ scanf("%d %s",&arr[i].x,arr[i].s); mark[i] = 0; arr[i].ti = i; if(arr[i].x == 5) mark[i] = 100; if(arr[i].x == 4) flag1++; if(arr[i].x == 3) flag2++; if(arr[i].x == 2) flag3++; if(arr[i].x == 1) flag4++; if(arr[i].x == 0) mark[i] = 50; } qsort(arr,n,sizeof(elem),cmp);//主要是这里的排序,无可否认的是qsort()真的好用! k1 = k2 = k3 = k4 = 1; for(i = 0;i < n;i++){ if((arr[i].x == 4 && k1 <= flag1/2)||flag1 == 1){ mark[arr[i].ti] = 95; k1++; } else if(arr[i].x == 4 && k1 > flag1/2) mark[arr[i].ti] = 90; if((arr[i].x == 3 && k2 <= flag2/2)||flag2 == 1){ mark[arr[i].ti] = 85; k2++; } else if((arr[i].x == 3 && k2 > flag2/2)) mark[arr[i].ti] = 80; if((arr[i].x == 2 && k3 <= flag3/2)||flag3 == 1){ mark[arr[i].ti] = 75; k3++; } else if((arr[i].x == 2 && k3 > flag3/2)) mark[arr[i].ti] = 70; if((arr[i].x == 1 && k4 <= flag4/2)||flag4 == 1){ mark[arr[i].ti] = 65; k4++; } else if(arr[i].x == 1 && k4 > flag4/2) mark[arr[i].ti] = 60; } for(i = 0;i < n;i++){ printf("%d/n",mark[i]); } printf("/n"); } return 0; }
相关文章推荐
- HDU 1084 What Is Your Grade?
- HDU-1084
- hdu1084解题报告
- hdu 1084 排序
- hdu 1084 What Is Your Grade?
- 近期简单题目小结 UVA 100+HDU 2007+URAL 1084+Poj 1152+UVA 10042+UVA 11752+UVA 10780
- hdu 1084 水题
- What Is Your Grade? HDU - 1084
- HDU——1084 What is your grade?(莫名的Wrong Answer)
- HDU 1084 What Is Your Grade?(排序)
- hdu 1.3.3/hed 1084
- hdu 1084 What Is Your Grade?
- HDU 1084 What Is Your Grade
- HDU 1084:What Is Your Grade?
- hdu 1084 水题
- hdu 1084 What Is Your Grade?
- HDU 1084 What Is Your Grade?
- Hdu 1084 What Is Your Grade?解题报告
- HDU 问题1084 What Is Your Grade?(结构体+sort)
- HDU 1084(水题)