알고리즘 공부
GBC
컴퓨터과학
2023. 3. 2. 20:10
https://softeer.ai/practice/info.do?idx=1&eid=584
Softeer
연습문제를 담을 Set을 선택해주세요. 취소 확인
softeer.ai
#include<iostream>
#include<vector>
using namespace std;
struct ele{
int speed;
int line;
};
int main(int argc, char** argv)
{
//글로벌 비즈니스 센터
//지하 7층, 지상 105층, 높이 570m
//0m~100m
// 빌딩에서 운영되는 엘베 n 개 구간으로 나뉘며 해당 구간의 제한 속도가 주어짐
// 구간의 총합은 100m 이며 각 구간별 구간의 길이와 제한 속도 모두 양의 정수로 주어짐
//구간 3 엘베 n 개 구간
//첫번째 구간의 길이 50m 이고 제한 속도 50m/s
//두번쨰 구간의 길이 40m 이고 제한 속도 40m/s
//세번째 구간의 길이 10m 이고 제한속도 30m/s
//제한 속도를 벗어나면 서버에 초과한만크의 속도가 로그에 남는다
//불행하게도 현재 서버 off 상태 광우는 서버의 데이터를 받아볼수 없음
// 임의의 구간의 길이와 속도를 정하여 시범운행할때, 가장 제한속도가 크게 벗어난 값을 스스로 구해야함
//m개의 구간을 검사하다할때
/*
▶ 첫 번째 구간의 운행 길이는 60m 이고 속도는 76m/s
▶ 두 번째 구간의 운행 길이는 18m 이고 속도는 28m/s
▶ 세 번째 구간의 운행 길이는 22m 이고 속도는 50m/s
제한속도를 벗어나 가장 차이가 큰속도를 구해보자
*/
//첫번째 구간 50m까지에서 제한속도와 실제 운행 속도를 비교했을때
int N,M;
cin>>N>>M;
vector<ele> test;
vector<ele> live;
for (int i=0;i<N;i++){
int line;
int speed;
cin>>line>>speed;
ele tmp;
tmp.line=line;
tmp.speed=speed;
test.push_back(tmp);
}
for(int i=0;i<M;i++){
int line;
int speed;
cin>>line>>speed;
ele tmp;
tmp.line=line;
tmp.speed=speed;
live.push_back(tmp);
}
/*
50 50
40 40
10 30
60 76
18 28
22 50
*/
int livecount=0;
int modline=live[0].line;
int modspeed=0;
int testcount=0;
int testmodline=test[0].line;
int testmodspeed=test[0].speed;
int compare=0;
while(1){
modline=modline-testmodline;
modspeed=live[livecount].speed-test[testcount].speed;
// cout<<modline<<",";
// cout<<testmodline<<endl;
// cout<<modspeed;
if(compare<=modspeed){
compare=modspeed;
}
if(modline<0){
livecount++;
testmodline=modline*-1;
modline=live[livecount].line;
}else if(modline>0){
testcount++;
testmodline=test[testcount].line;
}else if(modline==0){
testcount++;
livecount++;
modline=live[livecount].line;
testmodline=test[testcount].line;
}
if(livecount>=M||testcount>=N){
break;
}
}
cout<<compare;
return 0;
}