1. 程式人生 > >逆風的方向更適合飛翔

逆風的方向更適合飛翔

題目描述

北化ACM社團有n臺雲伺服器,每臺伺服器都有一個使用期限,第i臺伺服器還能使用Ri天。現在有m個任務需要部署到雲伺服器上執行,第j個任務需要執行Tj天。第j個任務能夠部署在第i臺伺服器上時當且僅當 Tj <=Ri,並且每臺伺服器在其使用期限內總共只能執行一個任務。即使Tk+Tj <=Ri,你也無法將第k個和第j個任務一起部署到第i 臺伺服器上,否則這題將失去其簽到題的作用(看到簽到題這幾個字的時候我笑了)。為了能充分利用雲伺服器,現在需要計算最多能部署多少任務。而你作為北化ACM的希望,這個問題需要由你 來解決。

輸入

單組資料 第一行兩個整數代表 n和m 第二行 n個整數代表 R1,R2,...,Rn 第三行 m個整數代表T1,T2,...,Tm 1<= n,m,Tj ,Ri <=100000

輸出

輸出一個整數代表最多有多少個任務能夠部署到雲伺服器上

樣例輸入

5 5
6 1 3 4 2 
4 6 6 2 5 

樣例輸出

3

 宣告一下:此程式碼未經評測,主要是伺服器關了 ,剛寫好然後伺服器就關了。傷心,簽到題,不難,通過兩個陣列判斷實現就OK了。

 程式碼:

#include <iostream>
#include <cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
    return a>b;
}
int R[1000008],T[1000008];
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=0;i<n;i++)
        scanf("%d",&R[i]);
    for(int i=0;i<m;i++)
       scanf("%d",&T[i]);
    sort(R,R+n,cmp);
    sort(T,T+m,cmp);
    int ans=0,j=0;
    for(int i=0;i<n&&j<m;)
    {
        if(R[i]>=T[j])
        {
            ans++;
            i++;
            j++;
        }
        else
        {
            j++;
        }
    }
    printf("%d\n",ans);
    return 0;
}