| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 655 人关注过本帖
标题:杭电上面的题目 不知道为什么A不了 ,一直Runtime Error(ACCESS_VIOLATION ...
只看楼主 加入收藏
lkc
Rank: 2
等 级:论坛游民
帖 子:7
专家分:12
注 册:2012-2-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
杭电上面的题目 不知道为什么A不了 ,一直Runtime Error(ACCESS_VIOLATION) 高手,大牛,帮帮忙!
这是我代码
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct student{
    int num;//做的题目数量
    char time[20];//时间
    int sum;//分数
    int h;//用来按顺序输出
};
student s[120];
int cmp(student x,student y)
{
    if(x.num!=y.num)return(x.num>y.num);
    if(x.num==y.num) return(strcmp(x.time,y.time)<=0);
}
int main()
{
    int n,i;
    while(scanf("%d",&n)&&n!=-1)
    {
        for(i=0;i<n;i++)
        {
            scanf("%d%s",&s[i].num,s[i].time);
            if(s[i].num>=1) s[i].sum=(s[i].num-1)*10+60;
            else if(s[i].num==0)  s[i].sum=50;
            s[i].h=i;
        }
        sort(s,s+n,cmp);
        
        int j, c=s[n-1].num, d=0;
     
        while(1){
            d++;
            if(d>n)  break;
            int min,max,k;
           for(i=n-1;i>=0;i--)
           {
               if(s[i].num==c)  { max=i;  break; }
           }
           
           for(i=max;i>=0;i--)
           {
            if(i==0&&s[i].num==c) min=0;
            if(s[i].num!=c)  { c=s[i].num;  min=i+1; break;}
           }
           
           k=(max-min+1)/2;
           for(i=min;i<min+k;i++)
           if(s[i].sum>50) s[i].sum=s[i].sum+5;
        }
        
        for(i=0;i<n;i++)
        {
          for(j=0;j<n;j++)
          if(s[j].h==i) { printf("%d\n",s[j].sum);  continue; }
        }
        printf("\n");
    }
    return 0;
}
这是题目

What Is Your Grade?


Problem Description
 
“Point, point, life of student!”
This is a ballad(歌谣)well known in colleges, and you must care about your score in this exam too. How many points can you get? Now, I told you the rules which are used in this course.
There are 5 problems in this final exam. And I will give you 100 points if you can solve all 5 problems; of course, it is fairly difficulty for many of you. If you can solve 4 problems, you can also get a high score 95 or 90 (you can get the former(前者) only when your rank is in the first half of all students who solve 4 problems). Analogically(以此类推), you can get 85、80、75、70、65、60. But you will not pass this exam if you solve nothing problem, and I will mark your score with 50.
Note, only 1 student will get the score 95 when 3 students have solved 4 problems.
I wish you all can pass the exam!
Come on!


 

Input
 
Input contains multiple test cases. Each test case contains an integer N (1<=N<=100, the number of students) in a line first, and then N lines follow. Each line contains P (0<=P<=5 number of problems that have been solved) and T(consumed time). You can assume that all data are different when 0<p.
A test case starting with a negative integer terminates the input and this test case should not to be processed.


 

 



Output
 
Output the scores of N students in N lines for each case, and there is a blank line after each case.


 

 



Sample Input

4
5 06:30:17
4 07:31:27
4 08:12:12
4 05:23:13
1
5 06:30:17
-1
 

 



Sample Output

100
90
90
95

100

搜索更多相关主题的帖子: include return 
2012-02-22 13:45
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:14 
程序代码:
#include<stdio.h>
int cmp(const void * a, const void * b)
{
    return *(int *)a - *(int *)b;
}
int main()
{
    int list[128], n;
    int a[5][128], an[5];
    int i, j, p, th, tm, ts;
    while(scanf("%d", &n), n > 0)
    {
        an[1] = an[2] = an[3] = an[4] = 0;
        for(i = 0; i < n; i++)
        {
            scanf("%d %d:%d:%d", &p, &th, &tm, &ts);
            if(p == 5) list[i] = 100;
            else if(p == 0) list[i] = 50;
            else a[p][an[p]++] = (th << 24) + (tm << 16) + (ts << 8) + i;
        }
        for(i = 1; i <= 4; i++) qsort(a[i], an[i], sizeof(int), cmp);
        for(i = 1; i <= 4; i++)
        for(j = 0; j < an[i]; j++)
            list[a[i][j] & 0xff] = i * 10 + 50 + (j < an[i] / 2 ? 5 : 0);
        for(i = 0; i < n; printf("%d\n", list[i++]));
        putchar('\n');
    }
    return 0;
}

重剑无锋,大巧不工
2012-02-22 15:32
快速回复:杭电上面的题目 不知道为什么A不了 ,一直Runtime Error(ACCESS_VIOL ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022505 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved