| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 375706 | OptxPrime | Preokret (COCI18_preokret) | C++11 | 1 ms | 364 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
#include<cmath>
using namespace std;
int main()
{
int a,b, prvoPoluvrijeme = 0;
int koseviA[3000], koseviB[3000];
cin>>a;
for(int i=0;i<a;i++){
cin>>koseviA[i]; /// unosimo sekunde u kojima je tim A postigao kos
if(koseviA[i]<=1440) prvoPoluvrijeme++;
}
cin>>b;
for(int i=0;i<b;i++){
cin>>koseviB[i]; /// isto za tim B
if(koseviB[i]<=1440) prvoPoluvrijeme++;
}
/// 1, 5, 100, 250 - kosevi koje je tim a postigao
/// 3, 70, 125, 800 - kosevi koje je tim b postigao
/// 1,A 5,A 100 250 3 70 125 800
/// {1, A}, {3, B}, {5,A} , 70, 100, 125, 250, 800 - kombinovano
vector<pair<int, char>> sviKosevi;
for(int i=0;i<a;i++) sviKosevi.push_back( {koseviA[i], 'a'} );
for(int i=0;i<b;i++) sviKosevi.push_back( {koseviB[i], 'b'} );
sort(sviKosevi.begin(), sviKosevi.end());
int dosadA = 0, dosadB = 0, brojPreokreta=0;
char vodstvo = '?';
for(int i=0;i<sviKosevi.size();i++){
if( dosadA > dosadB ) vodstvo='a';
else if(dosadA < dosadB) vodstvo='b';
if( sviKosevi[i].second == 'a' )
dosadA++;
else dosadB++;
if( dosadA - dosadB == 1 && vodstvo == 'b' ){
brojPreokreta++;
vodstvo = 'a';
}
if( dosadB - dosadA == 1 && vodstvo == 'a' ){
brojPreokreta++;
vodstvo = 'b';
}
}
cout<<prvoPoluvrijeme <<endl;
cout<<brojPreokreta<<endl;
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
