Openojの小さな試合(B題解題報告)

1425 ワード

第一題:http://openoj.awaysoft.com:8080/judge/contest/view.action?cid=47#problem/B
欲張りで、最初はご飯を買う時間を小さい頃から並べて作っていたので、何度も貢献しました.最后に自分yyはしばらくして食事の时间によって大きいから小さい顺位になるべきだと発见して、食事の时间が最も长い先に食事を买って食事をするため、このように后の人は彼が食事をする时に食事を买うことと食事の事を终えることができます.欲張りは弱いですね.
#include <cstdio>

#include <iostream>

#include <iostream>

#include <algorithm>

using namespace std;

const int max_s = 1007;

struct node

{

    int x,y;

}p[max_s];

int cmp(const node a,const node b)

{

    if(a.y!=b.y)

    return a.y>b.y;

    else

    return a.x<b.x;

}

int main()

{

    //freopen("d.txt","r",stdin);

    int n,i;

    while(scanf("%d",&n),n)

    {

        for(i=0;i<n;i++)

        scanf("%d%d",&p[i].x,&p[i].y);

        sort(p,p+n,cmp);//  

       /* for(i=0;i<n;i++)

        printf("%d %d
",p[i].x,p[i].y);*/ int m=p[0].x+p[0].y; int op=p[0].x; for(i=1;i<n;i++) { //printf(">>%d %d
",i,op); if(m<p[i].x+p[i].y+op) m=p[i].x+p[i].y+op;// 。。 // , op+=p[i].x; } printf("%d
",m); } return 0; }