whust 2016 #1 D Zhenya moves from the dormitory (贪心,模拟)

题目链接 傻逼模拟。。读完题就ac了。。。

  1/* ***********************************************
  2Author :111qqz
  3Created Time :2016年08月07日 星期日 18时04分18秒
  4File Name :code/whust2016/#1/D.cpp
  5************************************************ */
  6#include <cstdio>
  7#include <cstring>
  8#include <iostream>
  9#include <algorithm>
 10#include <vector>
 11#include <queue>
 12#include <stack>
 13#include <set>
 14#include <map>
 15#include <string>
 16#include <cmath>
 17#include <cstdlib>
 18#include <deque>
 19#include <ctime>
 20#define fst first
 21#define sec second
 22#define lson l,m,rt<<1
 23#define rson m+1,r,rt<<1|1
 24#define ms(a,x) memset(a,x,sizeof(a))
 25typedef long long LL;
 26#define pi pair < int ,int >
 27#define MP make_pair
 28using namespace std;
 29const double eps = 1E-8;
 30const int dx4[4]={1,0,0,-1};
 31const int dy4[4]={0,-1,1,0};
 32const int inf = 0x3f3f3f3f;
 33const int N=280;
 34int n,m;
 35int total,adva,advb;
 36struct Friend
 37{
 38    int money;
 39    int adv;
 40}f[N];
 41struct Room
 42{
 43    int type;
 44    int cost;
 45    int adv;
 46}r[N];
 47struct Ans
 48{
 49    int val;
 50    int rid;
 51    int fid;
 52    bool operator < (Ans b)const
 53    {
 54	return val>b.val;
 55    }
 56}ans[300*300];
 57int main()
 58{
 59	#ifndef  ONLINE_JUDGE 
 60	freopen("code/in.txt","r",stdin);
 61  #endif
 62	cin>>total>>adva>>advb;
 63	cin>>n;
 64	for ( int i = 1 ; i <= n ; i++)
 65	    scanf("%d %d",&f[i].money,&f[i].adv);
 66	scanf("%d",&m);
 67	for ( int i = 1 ; i <= m ; i++)
 68	    scanf("%d%d%d",&r[i].type,&r[i].cost,&r[i].adv);
 69	int cnt = 0 ;
 70	for ( int i = 1 ; i <= m ; i++)
 71	{
 72	    if (r[i].type==1)
 73	    {
 74		if (r[i].cost<=total)
 75		{
 76		    cnt++;
 77		    ans[cnt].val = r[i].adv+adva;
 78		    ans[cnt].rid = i;
 79		    ans[cnt].fid = -1;
 80		}
 81		continue;
 82	    }
 83	    else
 84	    {
 85		for ( int j = 0 ; j <= n ; j++)
 86		{
 87		    if (j==0) //自己住双人间
 88		    {
 89			if (r[i].cost<=total)
 90			{
 91			    cnt++;
 92			    ans[cnt].val = r[i].adv+advb;
 93			    ans[cnt].rid = i ;
 94			    ans[cnt].fid = -1;
 95			}
 96		    }
 97		    else
 98		    {
 99			if (r[i].cost<=total*2&&r[i].cost<=f[j].money*2)
100			{
101			    cnt++;
102			    ans[cnt].val = r[i].adv+f[j].adv;
103			    ans[cnt].rid = i ;
104			    ans[cnt].fid =  j;
105			}
106		    }
107		}
108	    }
109	}
110//	for ( int i = 1 ; i <= cnt ; i++)
111//	{
112//	    printf("val:%d room: %d  friend : %d \n",ans[i].val,ans[i].rid,ans[i].fid);
113//	}
114	if (cnt==0)
115	{
116	    puts("Forget about apartments. Live in the dormitory.");
117	}else
118	{
119	    sort(ans+1,ans+cnt+1);
120	    if (r[ans[1].rid].type==1)
121	    {
122		printf("You should rent the apartment #%d alone.\n",ans[1].rid);
123	    }
124	    else
125	    {
126		if (ans[1].fid==-1)
127		{
128		    	printf("You should rent the apartment #%d alone.\n",ans[1].rid);
129		}
130		else
131		{
		    printf("You should rent the apartment #%d with the friend #%d.\n",ans[1].rid,ans[1].fid);
1		}
2	    }
3	}
4  #ifndef ONLINE_JUDGE  
5  fclose(stdin);
6  #endif
7    return 0;
8}