답안 #799379

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
799379 2023-07-31T13:32:45 Z BidoTeima Sticks (POI11_pat) C++17
28 / 100
398 ms 35776 KB
#include <bits/stdc++.h> 
typedef long long ll;
using namespace std;  
const int N = 1e6 + 3;
vector<int>mn,mx;
vector<short>color;
ll st[2 * N];
void build(int l, int r, int node){
    if(l == r){
        st[node] = 1ll<<color[l];
        return;
    }
    int mid = (l + r) >> 1;
    build(l, mid, node + 1);
    build(mid + 1, r, node + 2 * (mid - l + 1));
    st[node] = st[node + 1] | st[node + 2 * (mid - l + 1)];
}
ll query(int ql, int qr, int l, int r, int node){
    if(l > qr || r < ql)
        return 0;
    if(ql <= l && r <= qr){
        return st[node];
    }
    int mid = (l + r) >> 1;
    return query(ql, qr, l, mid, node + 1) | query(ql, qr, mid + 1, r, node + 2 * (mid - l + 1));
}
int main() {      
    int k;
    cin>>k;
    vector<pair<int,short>>arr;
    for(int i = 0; i < k; i++){
        int n;
        cin>>n;
        for(int j = 0; j < n; j++){
            int w;
            cin>>w;
            arr.push_back(make_pair(w, i));
        }
    }
    sort(arr.begin(), arr.end()); 
    int curmn=arr[0].first,curmx=arr[0].first,curc=arr[0].second;
    for(int i = 1; i < (int)arr.size(); i++){
        if(arr[i].second != arr[i - 1].second){
            mn.push_back(curmn);
            mx.push_back(curmx);
            color.push_back(curc);
            curmn=curmx=arr[i].first,curc=arr[i].second;
        }
    }
    mn.push_back(curmn);
    mx.push_back(curmx);
    color.push_back(curc);
    int n = (int)color.size();
    build(0, n - 1, 0);
    arr.clear();
    int r = 2;
    for(int i = 0; i + 2 < n; i++){ 
        if(__builtin_popcountll(query(i, n - 1, 0, n - 1, 0)) < 3)break;
        while(__builtin_popcountll(query(i, r, 0, n - 1, 0)) < 3){
            r++;
        }
        //i,i+1,r
        if(mx[i]+mx[i+1]>mn[r]){
            return cout<<color[i]+1<<' '<<mx[i]<<' '<<color[i+1]+1<<' '<<mx[i+1]<<' '<<color[r]+1<<' '<<mn[r], 0;
        }
    }
    cout<<"NIE";
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Oczekiwano NIE
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Oczekiwano NIE
2 Incorrect 10 ms 596 KB Expected integer, but "NIE" found
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Oczekiwano NIE
2 Incorrect 16 ms 848 KB Expected integer, but "NIE" found
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 360 KB Oczekiwano NIE
2 Incorrect 43 ms 1408 KB Expected integer, but "NIE" found
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 10 ms 596 KB Oczekiwano NIE
2 Incorrect 71 ms 2380 KB Expected integer, but "NIE" found
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 22 ms 1360 KB Oczekiwano NIE
2 Incorrect 87 ms 4512 KB Expected integer, but "NIE" found
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 207 ms 17452 KB Output is correct
2 Incorrect 127 ms 4532 KB Expected integer, but "NIE" found
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 184 ms 18064 KB Output is correct
2 Incorrect 123 ms 4508 KB Expected integer, but "NIE" found
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 398 ms 32832 KB Memory limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 381 ms 35776 KB Memory limit exceeded
2 Halted 0 ms 0 KB -