CSES - Siperia opettaa 4.0 - Results
Submission details
Task:Linear Gimmick
Sender:zxc
Submission time:2016-08-04 14:48:54 +0300
Language:C++
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED100
Test results
testverdicttime
#1ACCEPTED0.06 sdetails
#2ACCEPTED0.05 sdetails
#3ACCEPTED0.06 sdetails
#4ACCEPTED0.05 sdetails
#5ACCEPTED0.07 sdetails
#6ACCEPTED0.06 sdetails
#7ACCEPTED0.06 sdetails
#8ACCEPTED0.08 sdetails
#9ACCEPTED0.06 sdetails
#10ACCEPTED0.06 sdetails
#11ACCEPTED0.06 sdetails
#12ACCEPTED0.19 sdetails
#13ACCEPTED0.17 sdetails
#14ACCEPTED0.32 sdetails
#15ACCEPTED0.30 sdetails
#16ACCEPTED0.29 sdetails
#17ACCEPTED0.06 sdetails
#18ACCEPTED0.29 sdetails
#19ACCEPTED0.32 sdetails
#20ACCEPTED0.32 sdetails
#21ACCEPTED0.20 sdetails
#22ACCEPTED0.33 sdetails
#23ACCEPTED0.20 sdetails
#24ACCEPTED0.31 sdetails
#25ACCEPTED0.20 sdetails
#26ACCEPTED0.20 sdetails
#27ACCEPTED0.32 sdetails
#28ACCEPTED0.06 sdetails
#29ACCEPTED0.06 sdetails

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:13:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i < s.size(); ++i) {
                               ^

Code

#include <iostream>
#include <set>
using namespace std;
int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int n;
    cin>>n;
    string s;
    cin>>s;
    int a = 0;
    int b = 0;
    for(int i = 0; i < s.size(); ++i) {
        if(s[i] != '<') break;
        ++a;
    }
    for(int i = (int)s.size()-1; i >= 0; --i) {
        if(s[i] != '>') break;
        ++b;
    }
    int lo = 0;
    int hi = n-1;
    int best = 0;
    while(lo <= hi) {
        int mid = (lo+hi)/2;
        set<int> st;
        for(int i = 0; i < n; ++i) {
            st.insert(st.end(), i);
        }
        int pos = mid;
        int moves = 0;
        int pois = 0;
        while(1) {
            st.erase(pos);
            ++moves;
            if(st.size() == 0) {
                cout<<n<<endl;
                return 0;
            }
            if(s[pos] ==  '<') {
                auto x = st.lower_bound(pos);
                if(x == st.begin()) {
                    pos = 0;
                    break;
                }
                --x;
                pos = *x;
            }
            else {
                auto x = st.lower_bound(pos);
                if(x == st.end()) {
                    pois = 1;
                    break;
                }
                pos = *x;
            }
        }
        best = max(moves, best);
        if(pois == 0) {
            lo = mid+1;
        }
        else {
            hi = mid-1;
        }
    }
    cout<<best<<endl;
}

Test details

Test 1

Verdict: ACCEPTED

input
5
>>><>

correct output
5

user output
5

Test 2

Verdict: ACCEPTED

input
6
><><><

correct output
6

user output
6

Test 3

Verdict: ACCEPTED

input
8
>>>><><<

correct output
8

user output
8

Test 4

Verdict: ACCEPTED

input
8
>>>>><>>

correct output
8

user output
8

Test 5

Verdict: ACCEPTED

input
10
><<><<<<<<

correct output
10

user output
10

Test 6

Verdict: ACCEPTED

input
7
>><><<<

correct output
7

user output
7

Test 7

Verdict: ACCEPTED

input
526
><><<<>><><><<<<<>>>>>><><<>><...

correct output
526

user output
526

Test 8

Verdict: ACCEPTED

input
920
<<<<><>>><><><<<<><<<<>>><<>>>...

correct output
917

user output
917

Test 9

Verdict: ACCEPTED

input
528
<>>>>>><><<>>>>>>>>>>><>><<<<>...

correct output
528

user output
528

Test 10

Verdict: ACCEPTED

input
837
<<<>><<<<><>><<<<<<>><<<<<<><<...

correct output
837

user output
837

Test 11

Verdict: ACCEPTED

input
761
>>>><><>>><<><>>>><<<>>>>>>>><...

correct output
761

user output
761

Test 12

Verdict: ACCEPTED

input
53592
<><<<<>>><>><<><><><<>><<<<<><...

correct output
53591

user output
53591

Test 13

Verdict: ACCEPTED

input
52256
>>><<><>><><<<>><<><>><>>><<>>...

correct output
52256

user output
52256

Test 14

Verdict: ACCEPTED

input
99234
>><>><<<<><<><<<<><><><><><<<>...

correct output
99234

user output
99234

Test 15

Verdict: ACCEPTED

input
90893
<<><><><<<<><>><<<<>>>><><><><...

correct output
90893

user output
90893

Test 16

Verdict: ACCEPTED

input
94064
>><><<>>><<>>>>>><>><<<><>><>>...

correct output
94064

user output
94064

Test 17

Verdict: ACCEPTED

input
5
>><<<

correct output
5

user output
5

Test 18

Verdict: ACCEPTED

input
85155
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...

correct output
84901

user output
84901

Test 19

Verdict: ACCEPTED

input
97153
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...

correct output
96645

user output
96645

Test 20

Verdict: ACCEPTED

input
99451
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...

correct output
99140

user output
99140

Test 21

Verdict: ACCEPTED

input
56288
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...

correct output
56150

user output
56150

Test 22

Verdict: ACCEPTED

input
93160
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...

correct output
92348

user output
92348

Test 23

Verdict: ACCEPTED

input
69172
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...

correct output
53872

user output
53872

Test 24

Verdict: ACCEPTED

input
94056
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...

correct output
89998

user output
89998

Test 25

Verdict: ACCEPTED

input
71927
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...

correct output
58103

user output
58103

Test 26

Verdict: ACCEPTED

input
72348
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...

correct output
70369

user output
70369

Test 27

Verdict: ACCEPTED

input
97095
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...

correct output
93334

user output
93334

Test 28

Verdict: ACCEPTED

input
6
><<><<

correct output
6

user output
6

Test 29

Verdict: ACCEPTED

input
7
<<><<>>

correct output
5

user output
5