程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU 4585 Shaolin (STL)

HDU 4585 Shaolin (STL)

編輯:C++入門知識

#include <cstdio>   
#include <iostream>   
#include <cstring>   
#include <cmath>   
#include <map>   
#include <algorithm>   
#include <cstdlib>   
using namespace std;  
  
int main() {  
    int n;  
    int id,g;  
    while(scanf("%d",&n) && n) {  
        map<int,int>m;  
        m[1000000000] = 1;  
        for(int i=1; i<=n; ++i) {  
            scanf("%d%d",&id,&g);  
            printf("%d ",id);  
            map<int,int> ::iterator it;  
            it = m.lower_bound(g); // 二分找第一個大於等於g的位置,如果沒有,則返回末尾位置   
            if(it == m.end()) {  
                it -- ;  
                printf("%d\n",it->second);  
            } else {  
                if(it == m.begin()) {  
                    printf("%d\n",it->second);  
                } else {  
                    int pos = it->first;  
                    int tmp = it->second;  
                    it --;  
                    printf("%d\n",(pos - g) < (g - it->first) ? tmp : it->second);  
                }  
            }  
            m[g] = id;  
        }  
    }  
    return 0;  
}  

#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
#include <map>
#include <algorithm>
#include <cstdlib>
using namespace std;

int main() {
    int n;
    int id,g;
    while(scanf("%d",&n) && n) {
        map<int,int>m;
        m[1000000000] = 1;
        for(int i=1; i<=n; ++i) {
            scanf("%d%d",&id,&g);
            printf("%d ",id);
            map<int,int> ::iterator it;
            it = m.lower_bound(g); // 二分找第一個大於等於g的位置,如果沒有,則返回末尾位置
            if(it == m.end()) {
                it -- ;
                printf("%d\n",it->second);
            } else {
                if(it == m.begin()) {
                    printf("%d\n",it->second);
                } else {
                    int pos = it->first;
                    int tmp = it->second;
                    it --;
                    printf("%d\n",(pos - g) < (g - it->first) ? tmp : it->second);
                }
            }
            m[g] = id;
        }
    }
    return 0;
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved