multimap的使用

99000 0
00:01:30 11:58:30 00:00:00
/* ***********************************************
Author :CKboss
Created Time :2015年07月10日 星期五 08时55分44秒
File Name :HDOJ5276.cpp
************************************************ */
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string>
#include <cmath>
#include <cstdlib>
#include <vector>
#include <queue>
#include <set>
#include <map>
using namespace std;
struct Time
{
int hh,mm,ss;
};
multimap<int,Time> mt;
/// every 10 second
/// s: 720000 m: 12000 h: 1000
const int DS=720000;
const int DM=12000;
const int DH=1000;
const int MOD=360*12000;
int degS=-DS,degM=-DM,degH=-DH;
int ADD()
{
degS=(degS+DS)%MOD;
degM=(degM+DM)%MOD;
degH=(degH+DH)%MOD;
int dur=abs(degM-degH);
if(dur>MOD/2) dur=MOD-dur;
return dur;
}
void init()
{
for(int h=0;h<=11;h++)
{
for(int m=0;m<=59;m++)
{
for(int s=0;s<60;s+=10)
{
int t=ADD();
mt.insert(make_pair(t,(Time){h,m,s}));
}
}
}
}
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
init();
int x;
while(scanf("%d",&x)!=EOF)
{
multimap<int,Time>::iterator it;
it=mt.find(x);
int cnt=mt.count(x);
for(int i=0;i<cnt;i++,it++)
{
Time time = it->second;
printf("%02d:%02d:%02d\n",time.hh,time.mm,time.ss);
}
}
return 0;
}
HDOJ 5276 YJC tricks time multimap
原文:http://www.cnblogs.com/mengfanrong/p/5154134.html