Submission #800363

#TimeUsernameProblemLanguageResultExecution timeMemory
800363alvingogo식물 비교 (IOI20_plants)C++14
0 / 100
1 ms212 KiB
#include "plants.h"
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#define fs first
#define sc second
#define p_q priority_queue
using namespace std;

int n;
set<pair<int,int> > s;
void init(int K, vector<int> r) {
    n=r.size();
    for(int i=0;i<n;i++){
        int al=(i-1+n)%n,ar=(i+1)%n;
        if(r[al]!=r[i]){
            if(r[al]==0){
                s.insert({i,0});
            }
            else{
                s.insert({i,1});
            }
        }
    }
}

pair<pair<int,int>,pair<int,int> > get(int r){
    auto z=s.lower_bound({r,-1});
    if(z==s.end()){
        z=s.begin();
    }
    if(z->fs==r){
        return {*z,*z};
    }
    else{
        auto b=z;
        if(z==s.begin()){
            b=prev(s.end());
        }
        else{
            b=prev(z);
        }
        return {*b,*z};
    }
}
int compare_plants(int x, int y) {
    auto c=get(x),d=get(y);
    if(c.fs==d.fs || c.sc==d.sc){
        if(c.fs==c.sc){
            if(c.fs.sc==1){
                return 1;
            }
            else{
                return -1;
            }
        }
        else if(d.fs==d.sc){
            if(d.fs.sc==1){
                return -1;
            }
            else{
                return 1;
            }
        }
        else{
            int u=(c.sc.fs-x+n)%n;
            int v=(c.sc.fs-y+n)%n;
            if((c.sc.sc==1) == (u>v)){
                return 1;
            }
            else{
                return -1;
            }
        }
    }
    else{
        return 0;
    }
}

Compilation message (stderr)

plants.cpp: In function 'void init(int, std::vector<int>)':
plants.cpp:14:26: warning: unused variable 'ar' [-Wunused-variable]
   14 |         int al=(i-1+n)%n,ar=(i+1)%n;
      |                          ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...