2016-06-01 6 views
1

Я пытался решить эту проблему problem от Codechef. Но с моей логикой что-то не так, что я не могу исправить, и я не могу дождаться появления редакционных статей, потому что конкурс длится много дней (например, 200 дней).Codechef Wormholes: Что не так с моей логикой?

Мой код:

#include <bits/stdc++.h> 

using namespace std; 

struct exam {int s,e;}; 

int main() { 
    int n,x,y; 
    scanf("%d%d%d",&n,&x,&y); 

    exam ar[n]; 
    int v[x],w[y]; 

    for (int i = 0; i < n; ++i) scanf("%d%d",&ar[i].s,&ar[i].e); 
    for (int i = 0; i < x; ++i) scanf("%d",&v[i]); 
    for (int i = 0; i < y; ++i) scanf("%d",&w[i]); 
    stable_sort(v,v+x); stable_sort(w,w+y); 

    int mini = 1e6; 

    for (int i = 0; i < n; ++i) { 

     int *t1 = lower_bound(v,v+x,ar[i].s); 

     if (*t1 > ar[i].s && t1 > v) --t1; 
     if (*t1 > ar[i].s && t1 == v) continue; 

     int *t2 = lower_bound(w,w+y,ar[i].e); 

     if (t2 == w+y) continue; 

     mini = min(mini,(*t2-*t1)+1); 
    } 

    printf("%d",mini); 
    return 0; 
} 

И, к сожалению, этот код не проходит два случая испытаний:

Может кто-нибудь сказать мне, что случилось с моей логикой?

ответ

0

Изменить

`if (*t1 > ar[i].s && t1 > v) --t1; 
if (*t1 > ar[i].s && t1 == v) continue;` 

Для

if (*t1 != ar[i].s) { 
    if (t1 == v) 
     continue; 
    else 
     --t1; 
} 
+0

Может быть, немного объяснений, по которым дела этот код будет вести себя корректно по сравнению с неправильным поведением выставленного к коду ФП в? – coyotte508

Смежные вопросы